Logo Universal Online Judge

UOJ

时间限制:2 s 空间限制:64 MB

#328. vjestica

Statistics

年轻的英雄,一个冒险家matej,一个长期艰苦的旅程后,到达了他的目的地–邪恶女巫玛丽亚房子。为了完成他的冒险,他必须解决女巫给他的最后的难题。
开始解决她的难题,我们的英雄需要熟悉称为前缀树的数据结构。
前缀树是一种数据结构,它用下列方法表示来自某一单词的所有前缀:
(一个词的前缀是一个连续的字母的子阵,这个词在词的某个位置开始。)
●树的每个边用字母表的字母表示
●树的根表示空前缀
●树上的所有其他节点代表一个非空的前缀中,每个节点代表一个前缀通过连接写在边缘上的字母,从树的根到那个节点(按顺序)。
●从一个单一的节点出来永远不会有两个边缘标记相同的字母(这种方式,我们最大限度地减少必要的节点代表所有前缀)。

etllxob4.png

词前缀树: “A”, “to”, “tea”, “ted”, “ten”, “i”, “in”, i “inn”
只有在Matej知道前缀树是什么时真正的难题才开始!
女巫有N个由英语小写字母组成的单词。如果女巫想知道该词的前缀树的节点数,那么难题就很简单,但她对这个不感兴趣。她想知道任意改变每个单词的字母排序后一个前缀树的最小节点数。
帮助matej找到难题的答案。

输入:
第一行整数N(1≤N≤16)
接下来N行包括由小写字母构成的一个单词
所有单词总长度小于1000000
输出:
唯一行包含一个数字,这个女巫的答案

样例:

Input
3
a
ab
abc
output
4
Input
3
a
ab
c
output
4
Input
4
baab
abab
aabb
bbaa
output
5
第三个样例的说明;
所有单词都可以改变成“aabb”,所以前缀树将有5个节点(4 + 1,1是树的根–空前缀)。