#P6289. [COCI2016-2017#1] Vještica

    ID: 5307 Type: RemoteJudge 2000ms 64MiB Tried: 0 Accepted: 0 Difficulty: 5 Uploaded By: Tags>动态规划,dp2016状态压缩COCI

[COCI2016-2017#1] Vještica

题目描述

Matej 面临着一个难题。在此之前,我们必须熟悉一种称作前缀树(trie)的数据结构。前缀树以前缀的方式,储存单词:

  • 前缀树的每一条边都用英文字母表中的字母表示。
  • 前缀树的根节点表示空前缀。
  • 前缀树的每个其他节点都表示一个非空前缀。依次连接根节点至该节点路径上所标有的字母,即可得到该前缀。
  • 不存在从一个节点出发的、标有相同字母的两条边。

例如,这棵前缀树储存了 A,to,tea,ted,ten,i,in,inn

现在,Matej 获得了 nn 个单词,并可以将其中的一些单词重组。例如 abc 可以重组为 acb,bac,bca,cab,cba。请你计算,将一些单词重组后,储存这些单词的前缀树节点数的最小值。

输入格式

第一行一个整数 nn

接下来 nn 行,每行一个字符串,表示 Matej 获得的单词。

输出格式

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

3
a
ab
abc 
4 
3
a
ab
c 
4 
4
baab
abab
aabb
bbaa 
5 

提示

样例 3 解释

所有单词均可以重组为 aabb。显然,前缀树最少的节点数应为 55(包含了表示空前缀的根节点)。


数据规模与约定

对于 100%100\% 的数据,保证 1n161\le n\le 16

所有单词的长度和不超过 10610^6,且只包含小写字母。


说明

题目译自 COCI2016-2017 CONTEST #1 T6 Vještica