#P1409. 77377
77377
题目描述
国际移动电话公司(ICPC)冒着未来的风险,投入资源开发新型手机,计划配备网页浏览器、邮件客户端、即时通讯工具等先进通信功能。除非ICPC成员能完成这项艰巨任务,否则公司将逐渐失去市场份额。
现在,你需要帮助ICPC为小型移动终端开发一款有趣的文本输入软件。如你所知,目前大多数手机有个按键:到的数字键以及特殊键和。尽管公司雄心勃勃,但仍决定遵循当前标准和惯例。你不能更改标准按键布局,并需注意以下标准按键字母分配:
按键 | 字母 | 按键 | 字母 |
---|---|---|---|
这意味着只能使用个按键进行文本输入。
大多数ICPC手机用户非常匆忙,不愿浪费哪怕一次按键时间。你的文本输入软件必须节省用户时间,使每个字符只需按一次键。例如,程序应能将按键序列""转换为单词"",或将""转换为""。
然而,由于一个数字可能对应多个字母,构建这样的输入软件似乎不可能。例如,""不仅可能表示"",还可能是种()其他字符串。但好消息是,ICPC新款手机内存足够存储词典。你可以编写程序过滤掉无效单词(即词典中未列出的字符串)。
输入
输入包含多个数据集,每个数据集表示一个词典和一个按键序列,格式如下:
n
word1
...
wordn
sequence
其中: • 是正整数,表示词典中的单词数量。
• 接下来行,每行是一个由小写字母到组成的单词。
• 词典中单词顺序任意,且不重复。
• 最后一行是按键序列,仅包含数字到。
假设: • 词典最多包含个单词。
• 每个单词长度在到之间。
• 按键序列长度在到之间。
• 输入以一行结束。
输出
对于每个数据集,输出所有能由按键序列表示的词典单词组合。每个组合应占一行,单词按词典序排列(若第一个单词相同则比较第二个,以此类推)。相邻单词用单个空格分隔,最后一个单词后加句点""。
输出所有有效组合后,另起一行输出两个连字符""。如果没有匹配组合,只需输出""。
假设每个数据集的输出行数不超过行(不包括终止行)。
样例输入 1
5
push
press
the
button
bottom
77377843288866
4
i
am
going
go
42646464
3
a
b
c
333
0
样例输出 1
press the button.
--
i am go go i.
i am going.
--
--
来源 Japan 2001