UVA12244 Growing Strings

题目描述

吉恩和吉娜经营着一种特殊的农场。不同于普通农场饲养动植物,他们种植的是字符串。字符串是一个字符序列。这些字符串在生长过程中有一个特点:它们会向自身左侧和/或右侧添加字符,但绝不会丢失字符,也不会在中间插入新字符。 吉恩和吉娜收集了一些字符串在不同生长阶段的照片。问题是这些照片没有标注,所以他们忘记了每张照片属于哪个字符串。他们想制作一面墙来展示字符串的生长过程,但需要你的帮助来找到合适的照片顺序。 每张照片展示一个字符串。照片序列必须满足:如果序列中 $s_i$ 紧接在 $s_{i+1}$ 之前,那么 $s_{i+1}$ 必须是由 $s_i$ 生长而来的字符串(即 $s_i$ 作为 $s_{i+1}$ 的一个连续子串出现)。同时,他们不想使用重复的照片,所以序列中的所有字符串必须互不相同。 给定一组代表所有可用照片的字符串,你的任务是计算在遵循上述规则下,能够产生的最大序列长度。

输入格式

多测。对于每组测试数据: 第一行包含一个整数 $N$,表示集合中字符串的数量($1 \le N \le 10^4$)。 第 $2$ 行至第 $N+1$ 行,每行包含一个互不相同的非空字符串,长度至多 $10^3$,均由小写英文字母组成。 所有字符串的长度之和不超过 $10^6$。 多测以 $N=0$ 作为结尾。

输出格式

对于每个测试用例,输出一行一个整数,表示可以产生的最大照片序列长度。