#P1072. Puzzle Out

Puzzle Out

本题没有可用的提交语言。

题目描述

第 26 届 ACM/ICPC 的科学委员会成员在设计比赛题目时,使用以下加密算法通过互联网安全地传输题目草稿。加密文本时,每个字母的所有出现都会被替换为另一个字母(可能是它自己),并且没有任何两个字母会被加密为同一个字母。原始文本和加密文本都只包含大写字母和空格。空格不会被加密,并且会在加密文本中完全保留。例如,字符串 GSRH RH GSV URIHG HZNKOV 是根据加密表(A -> Z, B -> Y, C -> X, ..., Z -> A)对 THIS IS THE FIRST SAMPLE 加密后的形式。

一个收到题目草稿的人丢失了加密表,但他有一本字典,其中包含了问题中可能出现的所有单词。你需要帮助他建立一个解密表,以便他可以从加密文本中恢复原始的题目草稿。给定一个包含原始文本中使用的所有单词的字典,以及加密文本,我们需要找到正确的加密表,使得解密后的文本中的所有单词都能在字典中找到。

输入

输入文件的第一部分是一个包含所有测试用例的英语单词字典。文件的第一行是一个整数 dd1d500001 \leq d \leq 50000),表示字典中单词的数量,随后是 dd 行,每行包含字典中的一个单词。字典中的单词按字母顺序排序,并且全部为大写。每个单词最多有 20 个字符,但你可以假设字典中所有单词的总长度不超过 350,000。接下来的一行包含一个整数 tt1t101 \leq t \leq 10),表示测试用例的数量,随后是每个测试用例的输入数据。每个测试用例由一个空行开始,包含多行输入文件中的加密文本。每行包含一个字符串,只包含大写字母和空格。你可以假设单词不会在行中间换行,并且每行末尾可能有任意数量的空格字符。输入行的最大长度为 80。

输出

输出包含恰好 tt 行,每行对应一个测试用例。每行应包含一个由 26 个字符组成的字符串,表示根据测试用例中使用的加密表对字符串 ABCDEFGHIJKLMNOPQRSTUVWXYZ 进行加密的结果。输出字符串中的字母应为大写。有些字母可能在加密文本中完全没有出现。在这种情况下,用 * 标记那些在解密后的输入文本中未出现的字母。如果测试用例无解,输出行应包含 #No solution#。如果一个测试用例有多个可能的加密表,输出行应包含 #More than one solution#

输入数据 1

14
BE
CHANGE
FIRST
IN
IS
MUST
SAMPLE
SEE
THE
THIS
TO
WISH
WORLD
YOU
4

GSRH RH GSV URIHG HZNKOV

IZM BMVU    SP UGP 
RGTANP IZM KFVG UZ VPP 
FA UGP KZWCQ

XYZ ABCDEFG

XZY ABD

输出数据 1

Z***VU*SR**ON**K*IHG******
TSRQP*NGF**CBAZ**WVUM*K*I*
#No solution#
#More than one solution#

来源

德黑兰 2001