#P1997. Word Puzzle

Word Puzzle

当前没有测试数据。

问题描述

如果没有著名的、广为人知的文字谜题,游戏集合将是不完整的。KOKODáKH 也包含了这类游戏。典型的文字谜题是一个用字母填充的矩形数组,以及一个单词列表。目标是找到数组中所有来自列表的单词,并将这些单词的所有字母标记(或“划掉”)。标记字母后,这些字母仍然可以是其他单词的一部分(单词可以交叉和重叠)。当列表中的所有单词都被找到并标记后,会剩下一些字母。这些剩余的字母按行读取,将组成一个秘密单词。

单词可以在八个方向上查找,包括对角线方向。

显然,KOKODáKH 需要为这个游戏带来一些创新。新规则规定,单词可以“跳过”数组的边界,并在对侧继续。例如,最上面一行与最下面一行相邻,最左边一列与最右边一列相邻。如果我们用数字 00R1R-1 编号行,用数字 00S1S-1 编号列,我们可以用坐标描述数组中的每个字段。例如,(0,0)(0,0) 是左上角。从位置 (x,y)(x,y) 开始的单词可以通过以下坐标的字符序列构成:(x,y)(x,y)((x+i+R)modR((x+i+R) mod R, (y+j+S)modS)(y+j+S) mod S)((x+2i+R)modR((x+2i+R) mod R, (y+2j+S)modS)(y+2j+S) mod S) 等等。iijj 可以取 1-100+1+1,但不能同时为零。

输入

输入由 ZZ 个任务组成。第一个数字 ZZ 表示任务的数量。接下来的每个任务包括一个用字母填充的数组和一个需要查找的单词列表。数组的描述以一行开始,包含两个整数 RRSS(用空格分隔),1R,S200R1 ≤ R, S ≤ 200。R 是数组的行数,SS 是数组的列数。接下来的 RR 行,每行由恰好 SS 个小写字母a(azz)组成。接下来的一行是一个整数 K0K1000K(0 ≤ K ≤ 1000),表示需要查找的单词数量。接下来的 KK 行,每行包含一个单词。单词的最大长度为 2020 个字符。单词可能不在数组中出现,也可能出现多次。在这种情况下,所有出现的单词都会被标记。单词列表中的单词可以重复。

输出

对于每个任务,程序输出一行。该行包含在标记所有列表中的单词后,数组中剩余的所有字母。字母不分离,并按它们在数组中按行优先顺序出现的顺序排列。字符串末尾有一个换行符。如果标记所有单词后没有剩余字母,程序输出空行。

##示例输入 1

1
3 7
kroksun
pranyra
cmakrom
7
syr
kra
kroksunkrok
pranyr
rak
mak
makro

示例输出 1

acm

来源

CTU Open 1999