年轻的勇士、冒险家 Matej 在经历了一段漫长而艰苦的旅程后,终于到达了他的终点——邪恶女巫 Marija 的家。为了完成他的冒险,他必须解决女巫给他的最后一个谜题。
为了开始解决她的谜题,我们的英雄需要熟悉一种被称为前缀树(trie)的数据结构。
前缀树是一种以如下方式表示某个单词集合中所有前缀(单词的前缀是指从单词开头到某个位置的连续子串)的数据结构:
- 树的每条边都用一个字母表中的字母表示。
- 树的根节点表示一个空前缀。
- 树中的所有其他节点都表示一个非空前缀,每个节点表示的前缀是通过将从树根到该节点(按顺序)的路径上的边上的字母拼接而得到的。
- 从单个节点出发,永远不会有两条标有相同字母的边(通过这种方式,我们可以使表示所有前缀所需的节点数最少)。
单词 "A", "to", "tea", "ted", "ten", "i", "in", "inn" 的前缀树。
只有在 Matej 了解了什么是前缀树之后,真正的谜题才开始!
正如你可能已经猜到的,女巫有 $N$ 个由英文小写字母组成的单词。如果女巫只是想知道该单词集合的前缀树的节点数,那么这个谜题就太简单了,但她对此并不感兴趣。她想知道,在任意排列每个单词的字母之后,前缀树所能拥有的最少节点数。
帮助 Matej 找到谜题的答案!
输入格式
输入的第一行包含一个整数 $N$($1 \le N \le 16$)。
接下来的 $N$ 行,每行包含一个由英文小写字母组成的单词。
所有单词的总长度将小于 $1\,000\,000$。
输出格式
输出的第一行也是唯一的一行,必须包含一个数字,即女巫 Marija 的谜题的答案。
样例
输入样例 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 个节点(4 个节点表示前缀 + 1 个表示空前缀的树根)。