#arc0113. [arc011_3]ダブレット
[arc011_3]ダブレット
问题描述
在欧洲有一个著名的文字游戏叫做“Dublette”。这个游戏的规则是通过逐个变换字母将一个单词转化为另一个单词。例如,将 head 转化为 tail,需要经过 4 个单词的变换:head→heal→teal→tell→tall→tail。编写一个程序,在给定的单词列表中执行 Dublette,并显示变换过程。要求变换次数最少。
输入
从标准输入中以以下格式给出输入:
:
- 第 1 行包含初始单词 和目标单词 ,两者之间用一个空格分隔。
- 第 2 行包含单词列表的大小 。
- 第 3 到第 行依次给出单词列表中的 个单词。
- 单词列表中可能包含重复的单词,且最初的单词 和目标单词 可能出现在单词列表中。
- 但是,最初的单词 和目标单词 可能相同。
- 每个单词的长度都相等,介于 1 到 30 之间。
- 每个单词只由小写英文字母
a-z
构成。
输出
如果可以进行变换,则输出第一行为变换所使用的单词个数 ,下面的 行依次输出包括初始单词和目标单词的变换过程。每行只输出一个单词。如果存在多个变换过程,可以随意选择一个进行输出。如果初始单词和目标单词相同,则输出 。如果无法进行变换,则输出 -1
。输出结束后要换行。
示例 1
输入示例
eye lid
4
lie
die
did
dye
输出示例
3
eye
dye
die
lie
lid
- 第一行输出变换所使用的单词数 ,这里为 3。
- 从第二行开始,依次输出变换过程。
eye
... 是初始单词 。dye
... 将eye
的第一个字母e
变换为d
。die
... 将dye
的第二个字母y
变换为i
。lie
... 将die
的第一个字母d
变换为l
。lid
... 将lie
的第三个字母e
变换为d
,同时是最后的目标单词 ,所以停止变换。
示例 2
输入示例
eye eye
4
lie
die
did
dye
输出示例
0
eye
eye
- 初始单词 和目标单词 相同,所以变换所使用的单词数 。
- 分别输出初始单词 和目标单词 ,每个单词占一行,然后结束。
示例 3
输入示例
eye lid
4
lie
lip
did
dye
输出示例
-1
- 由于给定的单词列表无法将
eye
转换为lid
,所以输出-1
。