#181. 新字典序

新字典序

附加文件

abcdefg......

字母表大家都很熟悉了,字典序的含义想必也不用介绍了。

例如有 5 个单词:ab、c、abc、cba、nba,按字典序排列就是 ab、abc、c、cba、nba

现在小明有 N 个单词。他需要将这些单词按字典序排序。他想把他喜欢的一些单词排在前面。所以他想建立新的字母表。

例如,还是那 5 个单词:ab、c、abc、cba、nba,如果新的字母表是 cnbadef...,那么再按字典序排列就是:c、cba、nba、ab、abc,这时,单词 c 被排在了第一位。

如果新的字母表是 nbacdef...,那么再按字典序排列就是:nba、ab、abc、c、cba,这时,单词 nba 被排在了第一位。

而不论建立什么样的字母表,你会发现,有的单词永远不可能被排在第一位。比如上面例子中的 abc、cba 就是这样不幸的单词。

现在小明想知道,在他可以任意建立新的字母表的前提下,有多少个单词有可能被排在第一位。

你需要按输入的顺序依次输出可能排在第一位的单词。

输入格式

第一行:一个整数 N

接下来 N 行:每行一个单词。

输出格式

第一行:一个整数 M,表示可通过改变字母表的顺序使其字典序最小的单词的个数。

接下来 M 行:每行一个可通过改变字母表的顺序使其字典序最小的单词。满足条件的单词须按照输入顺序依次输出。

样例输入

5
ab
c
abc
cba
nba

样例输出

3
ab
c
nba

数据范围

25% 的数据:1<=N<=101 <= N <= 10

100% 的数据:1<=N<=3×1041 <= N <= 3×10^4,数据保证所有单词的总长度不超过 3×1053×10^5,所有单词均由小写英文字母组成,且不会出现重复的单词。