AT_arc141_f [ARC141F] Well-defined Abbreviation
Description
[problemUrl]: https://atcoder.jp/contests/arc141/tasks/arc141_f
`A`, `B`, `C`, `D` のみからなる $ N $ 個の文字列 $ S_i\ (1\le\ i\ \le\ N) $ が与えられます。
`A`, `B`, `C`, `D` のみからなる文字列 $ T $ に対し、以下の操作を考えます。
- どの $ S_i $ も $ T $ の部分文字列にならなくなるまで、以下を繰り返す。
- $ S_i, $ および $ T $ が $ S_i $ を含む場所をひとつ選び、その場所から $ S_i $ を取り除いて前後を連結する
部分文字列とは? 部分文字列とは連続する部分列のことを指します。例えば `A`, `AB`, `BC` は `ABC` の部分文字列ですが、`BA` や `AC` は `ABC` の部分文字列ではありません。 $ T $ が「悪い文字列」であるとは、$ T $ に対する操作結果として得られる文字列が複数存在することをいいます。
「悪い文字列」が存在するか判定してください。
Input Format
入力は以下の形式で標準入力から与えられます。
> $ N $ $ S_1 $ $ S_2 $ $ \vdots $ $ S_N $
Output Format
「悪い文字列」が存在する場合、 `Yes` と出力してください。
存在しない場合、 `No` と出力してください。
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 10^6 $
- $ 1\ \leq\ |S_i|\ \leq\ 2\ \times\ 10^6 $
- $ |S_1|+|S_2|+\dots\ +|S_N|\ \leq\ 2\ \times\ 10^6 $
- $ i\neq\ j $ ならば $ S_i\ \neq\ S_j $
- $ S_i $ は`A`, `B`, `C`, `D` のみからなる文字列
### Sample Explanation 1
$ T $ に対する操作結果として得られる文字列は $ T $ から `A`, `B`, `C` をすべて除いたもののみです。
### Sample Explanation 2
例えば $ T= $`ABABA` に対する操作の結果として得られる文字列は `AB`, `BA` の $ 2 $ つあるので $ T $ は「悪い文字列」です。