JAG (Japan Alumni Group) 是一个由 $N$ 名成员组成的团体,致力于活跃竞技编程世界。JAG 的工作人员每天都在一个名为 JAG-channel 的 BBS 上交流。JAG-channel 中有多个讨论串,这些讨论串按最新回复的时间降序排列。
一天晚上,这 $N$ 名成员(分别用前 $N$ 个大写字母标识)每人都在 JAG-channel 中创建了一个讨论串。第二天早上,每名成员都在恰好 $K$ 个不同的讨论串中进行了回复。由于他们认为速度很重要,他们会从上到下浏览讨论串,一旦遇到感兴趣的讨论串,就会立即在其中回复。每名成员浏览讨论串的时间段各不相同,也就是说,在某人提交他/她的 $K$ 次回复期间,没有其他成员的回复。
你的任务是根据成员在讨论串中回复的时间段,估算成员的顺序。虽然你不知道讨论串创建的顺序,但你知道每名成员回复的顺序。由于讨论串始终保持排序状态,因此成员的顺序可能存在无效情况,即由于其他成员之前的回复,导致某些成员无法按从上到下的顺序在讨论串中回复。请找出字典序最小的有效成员顺序。
输入格式
输入包含单个测试用例。第一行包含两个由空格分隔的整数:$N$ ($4 \le N \le 16$) 和 $K$ ($N - 3 \le K \le N - 1$)。接下来是 $N$ 行字符串。每行包含恰好 $K$ 个不同的字符。第 $i$ 行的第 $j$ 个字符表示第 $i$ 个成员(由第 $i$ 个大写字母表示)回复的第 $j$ 个讨论串。每个讨论串由其创建者表示(例如,‘B’ 表示由成员 B,即第二名成员创建的讨论串)。保证至少存在一个有效的顺序。
输出格式
输出一行,包含一个长度恰好为 $N$ 的字符串,表示成员在讨论串中回复的有效顺序。输出的第 $i$ 个字符应表示在第 $i$ 个时间段进行回复的成员。如果存在多个有效顺序,请输出字典序最小的一个。
样例
输入 1
7 4 DEFG FEDA EFGB BGEA AGFD DABC CADE
输出 1
ABCDEFG
输入 2
4 3 CDB DAC BAD ABC
输出 2
DCBA
输入 3
16 13 NDHPFJIBLMCGK CMDJKPOLGIHNE MOLBIEJFPHADN KPNAOHBLMCGEI FCMLBHDOANJPK NHIGLOAPKJDMC KMLBIPHDEOANJ IEGCMLBOAPKJD JNAOEDHBLMCGF OEDHPFIBLMGKC GMLBIFPHDNAEO ENHGOPKJDMCAF JKPAOBLGEIHNF HPKFGJEIBLCOM LBINEJDAGFKPH FGMOCADJENIBL
输出 3
PONCAKJGIEDHMFBL