许多终端使用星号()来表示“任意字符串”,包括空字符串。例如,当列出匹配 `BASH的文件时,终端可能会列出BASH、BASHER和BASHFUL。对于FUL,它可能会列出BEAUTIFUL、AWFUL和BASHFUL。当列出BL时,可能会列出BASHFUL、BEAUTIFUL和BULL`。
在本题中,形式化地定义:模式(pattern)是一个仅由大写英文字母和星号(*)组成的字符串,名称(name)是一个仅由大写英文字母组成的字符串。如果存在一种将模式 $p$ 中的每个星号替换为(可能为空的)字符串的方法,使得结果为名称 $m$,则称模式 $p$ 匹配名称 $m$。注意,每个星号可以被替换为不同的字符串。
给定 $N$ 个模式,你能否找到一个长度不超过 $10^4$ 的单一名称,使其同时匹配所有这些模式,或者报告这无法做到?
输入格式
输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含一个整数 $N$,表示需要同时匹配的模式数量。随后有 $N$ 行,每行包含一个字符串 $P_i$,表示第 $i$ 个模式。
输出格式
对于每个测试用例,输出一行 Case #x: y,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是任何长度不超过 $10^4$ 且满足上述定义中每个 $P_i$ 均匹配 $y$ 的名称;如果不存在这样的名称,则输出 *(即仅一个星号)。
数据范围
时间限制:每个测试集 20 秒。 内存限制:1GB。 $1 \le T \le 100$。 $2 \le N \le 50$。 对于所有 $i$,$2 \le \text{length of } P_i \le 100$。 对于所有 $i$,$P_i$ 的每个字符要么是大写英文字母,要么是星号(*)。 对于所有 $i$,$P_i$ 中至少包含一个大写英文字母。
测试集 1(可见判定) 对于所有 $i$,$P_i$ 中恰好包含一个星号()。 对于所有 $i$,$P_i$ 的最左侧字符是唯一的星号()。
测试集 2(可见判定) 对于所有 $i$,$P_i$ 中恰好包含一个星号(*)。
测试集 3(可见判定) 对于所有 $i$,$P_i$ 中至少包含一个星号(*)。
样例
输入 1
2 5 *CONUTS *COCONUTS *OCONUTS *CONUTS *S 2 *XZ *XYZ
输出 1
Case #1: COCONUTS Case #2: *
说明
在样例 1 中,还有其他可能的答案,包括 COCOCONUTS 和 ILIKECOCONUTS。COCONUTSAREGREAT 和 COCOANUTS 均不可接受。注意,同一个模式在测试用例中可能出现多次。
在样例 2 中,不存在可接受的名称,因此答案为 *。
以下情况不会出现在测试集 1 中,但可能出现在测试集 2 或测试集 3 中:
4 H*O HELLO* *HELLO HE*
HELLO 和 HELLOGOODBYEHELLO 是可接受答案的示例。OTHELLO 和 HELLOO 将不可接受。
2 CO*DE J*AM
没有名称能同时匹配这两个模式,因此答案为 *。
2 CODE* *JAM
CODEJAM 是一个可接受答案的示例。
以下情况不会出现在测试集 1 或测试集 2 中,但可能出现在测试集 3 中:
2 A*C*E *B*D*
ABCDE 和 ABUNDANCE 属于可能的可接受答案,但 BOLDFACE 不是。
2 A*C*E *B*D
没有名称能同时匹配这两个模式,因此答案为 *。
2 **Q** *A*
QUAIL 和 AQ 在此处属于可能的可接受答案。