编程题
### 问题描述
小齐喜欢玩字符串游戏。他发现通过改变字母表的顺序,可以使一些字符串在字典排序中出现在其他所有字符串之前。
给定小齐正在玩的字符串,你需要计算哪些字符串在字典排序中可能出现在最前面。为了判断字符串 $X$ 是否在字符串 $Y$ 之前,找到它们首次不同的字符的索引 $j$。如果不存在这样的索引,则 $X$ 在 $Y$ 之前,当且仅当 $X$ 的长度小于 $Y$。否则,$X$ 在 $Y$ 之前,当且仅当 $X[j]$ 在字母表中的顺序早于 $Y[j]$。
### 输入格式
第 $1$ 行:一个整数 $N$($1 \leq N \leq 30,000$),表示小齐正在玩的字符串数量。
第 $2$ 行至第 $1+N$ 行:每行包含一个非空字符串。所有字符串总字符数不超过 $300,000$。输入中不包含重复的字符串。
### 输出格式
第 $1$ 行:一个整数 $K$,表示在字典排序中可能出现在最前面的字符串数量。
第 $2$ 行至第 $1+K$ 行:第 $i$ 行包含可能在字典排序中最前面的第 $i$ 个字符串。输出的顺序应与输入中给出的顺序相同。
### 样例输入
```
4
omm
moo
mom
ommnom
```
### 样例输出
```
2
omm
mom
```
### 评测数据规模
$1 \leq N \leq 30,000$。