题目描述
贝西又开始弹琴了。她发现通过改变字母顺序,她可以使一些字符串在字典顺序上排在所有其他字符串之前(字典排序)。
例如,Bessie发现对于字符串"omm"、"moo"、"mom"和"ommnom",她可以使用标准字母表让"mom"首先出现,并且她可以使用字母表让"omm"首先出现" abcdefghijklonmpqrstuvwxyz"。
然而,Bessie想不出任何办法让"moo"或"ommnom"首先出现。帮助 Bessie通过重新排列字母顺序来计算输入中的哪些字符串可以按字典顺序 排列。
要计算字符串X是否在字符串Y之前按字典顺序排列,请找到它们不同的第一个字符的索引,即j。如果不存在此类索引,则如果X短于Y,则X在Y之前按词典顺序排列。否则,如果X[j]在字母表中出现的时间早于Y[j],则X在字母表上在Y之前。
给定n个总长不超过m的互不相同的字符串,现在你可以任意指定字符之间的大小关系。问有多少个串可能成为字典
序最小的串,并输出这些串。n<=30,000,m<=300,000
输入格式
第 1行:包含 N(1<=N<=30,000)的单行,即 Bessie正在弹奏的琴弦数。
第 2..1+N行:每行包含一个非空字符串。所有字符串中的字符总数将不超过 300,000。输入中的所有字符都是小写字符"a"到"z"。输入将不 包含重复的字符串。
输出格式
第 1行:包含 K的单行,可按字典顺序排在首位的字符串数。
第 2..1+K行:第 (1+i)行应包含按字典顺序排列的第 i个字符串。字符串应该按照它们在输入中给出的顺序输出。
样例
输入样例
4
omm
moo
mom
ommnom
输出样例
2
omm
mom
提示
输入细节:
问题陈述中的示例。
输出详细信息:
只能先订购"omm"和"mom"。