[COCI2016-2017#1] Vještica

题目描述

Matej 面临着一个难题。在此之前,我们必须熟悉一种称作前缀树(`trie`)的数据结构。前缀树以前缀的方式,储存单词: - 前缀树的每一条边都用英文字母表中的字母表示。 - 前缀树的根节点表示空前缀。 - 前缀树的每个其他节点都表示一个非空前缀。依次连接根节点至该节点路径上所标有的字母,即可得到该前缀。 - 不存在从一个节点出发的、标有相同字母的两条边。 例如,这棵前缀树储存了 `A,to,tea,ted,ten,i,in,inn`: ![](https://cdn.luogu.com.cn/upload/image_hosting/etllxob4.png) 现在,Matej 获得了 $n$ 个单词,并可以将其中的一些单词重组。例如 `abc` 可以重组为 `acb,bac,bca,cab,cba`。请你计算,将一些单词重组后,储存这些单词的前缀树节点数的最小值。

输入输出格式

输入格式


第一行一个整数 $n$。 接下来 $n$ 行,每行一个字符串,表示 Matej 获得的单词。

输出格式


一行,一个整数,表示将一些单词重组后,储存这些单词的前缀树节点数的最小值。

输入输出样例

输入样例 #1

3
a
ab
abc 

输出样例 #1

4 

输入样例 #2

3
a
ab
c 

输出样例 #2

4 

输入样例 #3

4
baab
abab
aabb
bbaa 

输出样例 #3

5 

说明

#### 样例 3 解释 所有单词均可以重组为 `aabb`。显然,前缀树最少的节点数应为 $5$(包含了表示空前缀的根节点)。 ------------ #### 数据规模与约定 对于 $100\%$ 的数据,保证 $1\le n\le 16$。 所有单词的长度和不超过 $10^6$,且只包含小写字母。 ------------ #### 说明 **题目译自 [COCI2016-2017](https://hsin.hr/coci/archive/2016_2017/) [CONTEST #1](https://hsin.hr/coci/archive/2016_2017/contest1_tasks.pdf) _T6 Vještica_**。