atcoder#AGC047B. [AGC047B] First Second

[AGC047B] First Second

配点 : 700700

問題文

リマクは、文字列の先頭 22 文字のうち片方を取り除くことを繰り返し行えます。例えば、$abcxyx \rightarrow acxyx \rightarrow cxyx \rightarrow cyx$ とすることができます。

NN 個の相異なる文字列 S1,S2,,SNS_1, S_2, \ldots, S_N が与えられます。N(N1)/2N \cdot (N-1) / 2 個のペア (Si,Sj)(S_i, S_j) のうち何個において、リマクは一方からもう一方を得ることができるでしょうか。

制約

  • 2N2000002 \leq N \leq 200\,000
  • SiS_i は英小文字 a - z からなる。
  • SiSjS_i \neq S_j
  • 1Si1 \leq |S_i|
  • S1+S2++SN106|S_1| + |S_2| + \ldots + |S_N| \leq 10^6

入力

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

NN

S1S_1

S2S_2

\vdots

SNS_N

出力

リマクが一方の文字列からもう一方を得られるような非順序対 (Si,Sj)(S_i, S_j) (iji \neq j) の個数を出力せよ。

3
abcxyx
cyx
abc
1

条件を満たすペアは (abcxyx,cyx)(abcxyx, cyx) のみです。

6
b
a
abc
c
d
ab
5

条件を満たすペアは (b,abc)(b, abc), (a,abc)(a, abc), (abc,c)(abc, c), (b,ab)(b, ab), (a,ab)(a, ab)55 個です。