#282. 单词背诵 (letter)

单词背诵 (letter)

Description

小小在背单词,她发现当背诵了单词 beauty 以后 ,再接着背诵单词 beautiful 就会觉得容易许多。由于有很多单词要背,她希望找到一种好的背诵顺序。单词 A 和它的前驱 B的最大公共前缀的长度称为背诵单词 A 的便利值(例如:B=’beauty’,A=’beautiful’,则 A的便利值是 len({A,B})=len(’beaut’)=5),我们认为一个背诵单词 A 的花费是它的长度(例如: ’beautiful’的长度 len(‘beautiful’)=9)与它的便利值之差(对于上述例子背诵 A 的花费为9-5=4)。请你求一个背诵顺序,使得背诵这些单词的花费总和最小。假设一开始你什么单词都不记得。

Format

Input

给定一个单词表:第一行 N(N < 100)表示单词总数。接下来 N 行,每行一个单词。每个单词的长度不超过 20,均为小写字母组成。

Output

按照背诵顺序输出每个单词,每个单词占一行,不能有多余的字符。

Samples

5
beauty
beautiful
flower
man
dog
beauty
beautiful
dog
flower
man

Limitation

1s, 1024KiB for each test case.