atcoder#ABC268D. [ABC268D] Unique Username

[ABC268D] Unique Username

题目描述

高橋君はあるサービスで使うユーザー名を決めるのに困っています。彼を助けるプログラムを書いてください。

以下の条件をすべて満たす文字列 X X 1 1 つ求めてください。

  • X X は次の手順で得られる文字列である。
    • N N 個の文字列 S1,S2,,SN S_1,S_2,\ldots,S_N を好きな順番で並べたものを S1, S2, ,SN S_1',\ S_2',\ \ldots,S_N' とする。そして、S1 S_1' 、( 1 1 個以上の _ )、S2 S_2' 、( 1 1 個以上の _ )、 \ldots 、( 1 1 個以上の _ )、SN S_N' をこの順番で連結したものを X X とする。
  • X X の文字数は 3 3 以上 16 16 以下である。
  • X X M M 個の文字列 T1,T2,,TM T_1,T_2,\ldots,T_M のいずれとも一致しない。

ただし、条件をすべて満たす文字列 X X が存在しない場合は代わりに -1 と出力してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N M M S1 S_1 S2 S_2 \vdots SN S_N T1 T_1 T2 T_2 \vdots TM T_M

输出格式

条件をすべて満たす文字列 X X 1 1 つ出力せよ。ただし、条件をすべて満たす文字列 X X が存在しない場合は代わりに -1 を出力せよ。
答えが複数存在する場合、どれを出力しても良い。

题目大意

高桥君有取名选择困难症,于是他找到你,希望帮他取一个用户名。

具体取名规则是:把给定的 NN 个字符串 S1S2,,SNS_1,S_2,\ldots,S_N 以任意顺序排列,并在每两个字符串中间加 1\ge1 个下划线,要求不能与后面给定的 MM 个字符串 T1T2,,TMT_1,T_2,\ldots,T_M 中的任意一个相同。

其中,你给出的字符串的长度 XX 应该满足 3X163\le X \le 16 。如果无法满足条件,输出 1-1

输入格式

第一行两个整数,分别为 NNMM

NN 行每行一个字符串 SiS_i

MM 行每行一个字符串 TiT_i

输出格式

一个满足题意的字符串 XX 。如果没有满足的,输出一个数 1-1

1 1
chokudai
chokudai
-1
2 2
choku
dai
chokudai
choku_dai
dai_choku
2 2
chokudai
atcoder
chokudai_atcoder
atcoder_chokudai
-1
4 4
ab
cd
ef
gh
hoge
fuga
____
_ab_cd_ef_gh_
ab__ef___cd_gh

提示

制約

  • 1  N  8 1\ \leq\ N\ \leq\ 8
  • 0  M  105 0\ \leq\ M\ \leq\ 10^5
  • N,M N,M は整数
  • 1  Si  16 1\ \leq\ |S_i|\ \leq\ 16
  • N1+Si  16 N-1+\sum{|S_i|}\ \leq\ 16
  • i  j i\ \neq\ j ならば Si  Sj S_i\ \neq\ S_j
  • Si S_i は英小文字のみからなる文字列
  • 3  Ti  16 3\ \leq\ |T_i|\ \leq\ 16
  • i  j i\ \neq\ j ならば Ti  Tj T_i\ \neq\ T_j
  • Ti T_i は英小文字と _ のみからなる文字列

Sample Explanation 1

条件のうち 1 1 番目と 2 2 番目を満たす文字列は X= X= chokudai しかありませんが、これは T1 T_1 と一致します。 このため、条件をすべて満たす文字列 X X が存在せず、-1 が正しい出力となります。

Sample Explanation 2

この他に、choku\_\_dai (chokudai の間の \_2 2 つ) 等も条件をすべて満たします。

Sample Explanation 3

chokudai\_\_atcoderatcoder\_\_chokudai (chokudaiatcoder の間の \_2 2 つ)は文字数が 17 17 なので 2 2 番目の条件を満たしません。

Sample Explanation 4

1 1 番目の条件で記述されている操作で得られないような文字列が Ti T_i として与えられる場合があります。