Swyper 键盘是一种用于触摸屏手机的新型键盘,你只需绘制一条或多条相连的线段(折线)即可输入,而无需点击单词的每个字母。本题所涉及的键盘布局如下所示(每个方格的宽和高均为 1 个单位,每个方格的中心点坐标均为整数):
请注意,本题描述的键盘与现实中流行的键盘并不完全一致,因此请勿做出题目描述中未提及的任何假设。
本题中的折线由一个包含 2 个或更多大写英文字母的字符串表示,其中任意两个连续的字母总是不同的。例如,字符串 “ACM” 表示一条折线,它从字母 ‘A’ 的中心出发,然后到达字母 ‘C’ 的中心,再到达字母 ‘M’ 的中心。但这条折线会经过其他一些字母,在 ‘A’ 和 ‘C’ 之间,它经过了 ‘B’;在 ‘C’ 和 ‘M’ 之间,它依次经过了 ‘B’、‘H’、‘G’ 和 ‘N’。给定表示折线的初始字符串,我们可以得到该折线按正确顺序经过的所有字母组成的另一个字符串,这被称为折线的“展开”。在本例中,该字符串为 “ABCBHGNM”。当你绘制这条折线(最初由字符串 “ACM” 表示)时,你可能想输入的是该折线展开字符串(即 “ABCBHGNM”)的任意子序列,例如 “ACM”、“BGN”、“ABCBHGNM” 或任何其他子序列。
如果字符串 $X$ 可以通过从字符串 $Y$ 中删除零个或多个字母且不改变剩余字母的顺序而得到,则称 $X$ 是 $Y$ 的子序列。
给定一个包含一个或多个单词的字典,以及一个表示折线初始状态的字符串,你的任务是在字典中找到一个单词,该单词可能是上述折线所代表的含义。
注意:仅触碰方格边界的折线不计为触碰,例如,从 ‘A’ 到 ‘H’ 的线段不会触碰 ‘B’ 或 ‘G’。
输入格式
程序将在一个或多个测试用例上进行测试。输入的第一行是一个整数 $T$,表示测试用例的数量 ($1 \le T \le 100$)。接下来是各个测试用例,每个测试用例的第一行包含一个整数和一个字符串,中间用空格隔开,分别表示字典中的单词数量 $N$ ($1 \le N \le 1,000$) 和折线的初始表示字符串。随后有 $N$ 行,每行包含一个字符串,表示字典中的一个单词。输入中的所有字符串均为非空字符串,长度至少为 2,至多为 100,且仅包含大写英文字母(‘A’ 到 ‘Z’)。
注意,给定的折线字符串仅用于描述其线段,它可能不包含折线经过的所有字母。此外,同一条折线可能会多次经过同一个字母,尽管折线的连续字母不能相同。
输出格式
对于每个测试用例,如果字典中没有单词是给定折线展开字符串的子序列,则打印一行 “NO SOLUTION”。否则,打印字典中第一个(按照输入顺序)是给定折线展开字符串子序列的单词。
样例
输入 1
2 3 ACM ACPC AM ACM 2 ACM XY ZW
输出 1
AM NO SOLUTION