你可能了解 KMP 算法。你可能也知道 “KMP” 是 “Knuth Morris Pratt” 的缩写,他们于 1977 年共同发表了该算法。你该如何读出 “KMP” 呢?当然,你可以直接读作 “Knuth Morris Pratt”,但缩写本身该怎么读呢?由于 “KMP” 不是一个可发音的单词,你只能逐个字母读出。在本题中,我们关注的是可发音的缩写。
我们需要一些定义来规范这一要求。短语是单词的列表,单词是字母的序列。每个字母要么是元音,要么是辅音。判断一个字母是元音还是辅音取决于语言和其他因素。为简单起见,我们规定 “A”、“E”、“I”、“O”、“U” 和 “Y” 这六个字母为元音,其余均为辅音。虽然一个单词是否可发音存在争议,但我们规定,当一个单词不包含超过两个连续辅音时,它是可发音的。例如,“LEMPEL” 是一个可发音的单词,而 “DIJKSTRA” 则不是。
给定一个由 $N$ 个单词组成的短语,该短语的一个缩写是 $N$ 个前缀的拼接,每个单词取一个前缀,并按它们在短语中出现的顺序排列。每个前缀必须至少包含一个字母,且最多包含三个字母。你的任务是确定一个可发音缩写的最小长度。
以 $N = 3$ 的短语 “KNUTH MORRIS PRATT” 为例。该短语有 27 种可能的缩写,例如 “KMP”、“KMPR”、“KMPRA”、“KMOP”、“KMOPR” 和 “KNUMORPRA” 等。其中一些缩写是可发音的(如 “KMOP” 和 “KMOPR”),而另一些则不是(如 “KMP”、“KMPR”、“KMPRA” 和 “KNUMORPRA”)。由于唯一的三个字母缩写 “KMP” 不可发音,因此 “KMOP” 是该短语最小长度的可发音缩写。
输入格式
第一行包含一个正整数 $N$,表示短语中的单词数量。
接下来的 $N$ 行,每行包含一个由大写字母组成的非空字符串,表示短语中的一个单词。单词按它们在短语中出现的顺序给出。所有字符串长度之和最多为 $10^6$。
输出格式
输出一行,包含一个整数,表示可发音缩写的最小长度;如果该短语不存在可发音的缩写,则输出字符 “*”(星号)。
样例
样例输入 1
3 KNUTH MORRIS PRATT
样例输出 1
4
样例输入 2
3 KNUTH M PRATT
样例输出 2
5
样例输入 3
3 K M P
样例输出 3
*
样例输入 4
2 K M
样例输出 4
2
样例输入 5
4 YOU SHOULD BE DANCING
样例输出 5
5