编程题
### 问题描述
在一个英文词汇游戏中,有一个规则是:一个合法的单词可以通过修改一个字母变成另一个合法的单词。例如:cat -> hat -> hot -> hop -> mop 这样的一条路径,我们称之为字母阶梯。
现在,你得到一个大小为 $N$ 的英文单词列表(全小写,无重复,单词长度一致),以及两个单词:开始单词 $begin$ 和结束单词 $end$,你需要找到从 $begin$ 到 $end$ 的最短字母阶梯。题目保证开始单词和结束单词都在单词列表中。
### 输入格式
第一行输入一个整数 $N$,表示单词的数量。
接下来 $N$ 行:每行一个单词 $perline$。
最后一行输入两个单词,中间一个空格分隔,表示开始单词 $begin$ 和结束单词 $end$。
### 输出格式
在一行中输出一个整数,表示从开始单词到结束单词的最短字母阶梯长度。如果不存在这样的字母阶梯则输出 $-1$。
### 样例输入
```
5
cat
hat
hot
hop
mop
cat mop
```
### 样例输出
```
4
```
### 测评数据规模
$2 \leq N,len \leq 1000$,其中 $N$ 为单词数量,$len$ 为每个单词的长度。