atcoder#ARC141F. [ARC141F] Well-defined Abbreviation

[ARC141F] Well-defined Abbreviation

配点 : 11001100

問題文

A, B, C, D のみからなる NN 個の文字列 Si (1iN)S_i\ (1\le i \le N) が与えられます。

A, B, C, D のみからなる文字列 TT に対し、以下の操作を考えます。

  • どの SiS_iTT の部分文字列にならなくなるまで、以下を繰り返す。- Si,S_i, および TTSiS_i を含む場所をひとつ選び、その場所から SiS_i を取り除いて前後を連結する
  • Si,S_i, および TTSiS_i を含む場所をひとつ選び、その場所から SiS_i を取り除いて前後を連結する
部分文字列とは? 部分文字列とは連続する部分列のことを指します。例えば A, AB, BCABC の部分文字列ですが、BAACABC の部分文字列ではありません。
$T$ が「悪い文字列」であるとは、$T$ に対する操作結果として得られる文字列が複数存在することをいいます。

「悪い文字列」が存在するか判定してください。

制約

  • 1N1061 \leq N \leq 10^6
  • 1Si2×1061 \leq |S_i| \leq 2 \times 10^6
  • S1+S2++SN2×106|S_1|+|S_2|+\dots +|S_N| \leq 2 \times 10^6
  • iji\neq j ならば SiSjS_i \neq S_j
  • SiS_iA, B, C, D のみからなる文字列

入力

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

NN

S1S_1

S2S_2

\vdots

SNS_N

出力

「悪い文字列」が存在する場合、 Yes と出力してください。

存在しない場合、 No と出力してください。

3
A
B
C
No

TT に対する操作結果として得られる文字列は TT から A, B, C をすべて除いたもののみです。

1
ABA
Yes

例えば T=T=ABABA に対する操作の結果として得られる文字列は AB, BA22 つあるので TT は「悪い文字列」です。

4
CBA
ACB
AD
CAB
Yes