atcoder#ABC268H. [ABC268Ex] Taboo

[ABC268Ex] Taboo

配点 : 600600

問題文

文字列 SS が与えられます。また、高橋君は次の操作を 00 回以上行うことが出来ます。

  • 1iS1 \leq i \leq |S| なる整数 ii を選び、SSii 文字目を * に変える。

高橋君の目的は、SS部分文字列として NN 個の文字列 T1,T2,,TNT_1,T_2,\ldots,T_N がいずれも現れないようにすることです。 これを達成するために必要な操作の回数の最小値を求めてください。

制約

  • 1S5×1051 \leq |S| \leq 5 \times 10^5
  • 1N1 \leq N
  • NN は整数
  • 1Ti1 \leq |T_i|
  • Ti5×105\sum{|T_i|} \leq 5 \times 10^5
  • iji \neq j ならば TiTjT_i \neq T_j
  • S,TiS, T_i は英小文字のみからなる文字列

入力

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

SS

NN

T1T_1

T2T_2

\vdots

TNT_N

出力

答えを出力せよ。

abcdefghijklmn
3
abcd
ijk
ghi
2

ii として 1199 を選んで操作をすると SS*bcdefgh*jklmn となり、abcdijkghi がいずれも部分文字列として現れなくなります。

atcoderbeginnercontest
1
abc
0

操作をする必要がありません。

aaaaaaaaa
2
aa
xyz
4