我们把“等价”理解为字符多重集合相同(即字母出现次数一致、顺序无关)。 对每个字符串 si ,只要它包含某个字母 c 至少 x 次,就能从中挑出 x 个 c 作为子序列的一部分。于是:
若要存在同一个字符串 t 被每个 si 的某个子序列“等价”,那么对每个字母 c,在 t 中的出现次数 cntt[c] 不能超过所有字符串中该字母出现次数的最小值:
规定两段文字算作同构,当且仅当其中一者能靠重排这些字符变成另一者。例如,xyzzx和zxzyx同构,k和k同构,mnnm和nmnm同构。而xyz和xxy不同构,k和q不同构。
现在读入 m 个全是小写英文字母的串 w1,w2,…,wm,你需要找出一个尽可能长的串 z,让每一个 w 都能抽出一段子序列,该子序列拼成的串与 z 同构。
若答案不止一个,请写出字典序最小的那个。若根本不存在,则写出−1。
第一行读入一个正整数g(1≤g≤5),代表有多少组。
每一组的格式如下:
第一行读入一个正整数m(1≤m≤104),代表串的条数。
第二行读入m个全是小写英文字母的串w1,w2,...wm,相邻两串之间空一格,行末不要多余空格。
保证同一组里各串长度加起来不超过105。
每一组单独写一行。若答案不止一个,请写出字典序最小的那个。若根本不存在,则写出−1。
输入
2
3
farm from form
2
cat dog
输出
fmr
-1
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册