AT_abc268_d [ABC268D] Unique Username
Description
[problemUrl]: https://atcoder.jp/contests/abc268/tasks/abc268_d
> 高橋君はあるサービスで使うユーザー名を決めるのに困っています。彼を助けるプログラムを書いてください。
以下の条件をすべて満たす文字列 $ X $ を $ 1 $ つ求めてください。
- $ X $ は次の手順で得られる文字列である。
- $ N $ 個の文字列 $ S_1,S_2,\ldots,S_N $ を好きな順番で並べたものを $ S_1',\ S_2',\ \ldots,S_N' $ とする。そして、$ S_1' $、( $ 1 $ 個以上の `_` )、$ S_2' $、( $ 1 $ 個以上の `_` )、$ \ldots $、( $ 1 $ 個以上の `_` )、$ S_N' $ をこの順番で連結したものを $ X $ とする。
- $ X $ の文字数は $ 3 $ 以上 $ 16 $ 以下である。
- $ X $ は $ M $ 個の文字列 $ T_1,T_2,\ldots,T_M $ のいずれとも一致しない。
ただし、条件をすべて満たす文字列 $ X $ が存在しない場合は代わりに `-1` と出力してください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ M $ $ S_1 $ $ S_2 $ $ \vdots $ $ S_N $ $ T_1 $ $ T_2 $ $ \vdots $ $ T_M $
Output Format
条件をすべて満たす文字列 $ X $ を $ 1 $ つ出力せよ。ただし、条件をすべて満たす文字列 $ X $ が存在しない場合は代わりに `-1` を出力せよ。
答えが複数存在する場合、どれを出力しても良い。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 8 $
- $ 0\ \leq\ M\ \leq\ 10^5 $
- $ N,M $ は整数
- $ 1\ \leq\ |S_i|\ \leq\ 16 $
- $ N-1+\sum{|S_i|}\ \leq\ 16 $
- $ i\ \neq\ j $ ならば $ S_i\ \neq\ S_j $
- $ S_i $ は英小文字のみからなる文字列
- $ 3\ \leq\ |T_i|\ \leq\ 16 $
- $ i\ \neq\ j $ ならば $ T_i\ \neq\ T_j $
- $ T_i $ は英小文字と `_` のみからなる文字列
### Sample Explanation 1
条件のうち $ 1 $ 番目と $ 2 $ 番目を満たす文字列は $ X= $ `chokudai` しかありませんが、これは $ T_1 $ と一致します。 このため、条件をすべて満たす文字列 $ X $ が存在せず、`-1` が正しい出力となります。
### Sample Explanation 2
この他に、`choku\_\_dai` (`choku` と `dai` の間の `\_` が $ 2 $ つ) 等も条件をすべて満たします。
### Sample Explanation 3
`chokudai\_\_atcoder` や `atcoder\_\_chokudai` (`chokudai` と `atcoder` の間の `\_` が $ 2 $ つ)は文字数が $ 17 $ なので $ 2 $ 番目の条件を満たしません。
### Sample Explanation 4
$ 1 $ 番目の条件で記述されている操作で得られないような文字列が $ T_i $ として与えられる場合があります。