Kimariji Key Keeper

2 secs 1024 MB
yuki4869's icon yuki4869

問題文

4869高校かるた部では、参加者から集めた文字列を使ってかるた大会を行うことにしました。

かるた大会で絶対に勝ちたいyuki君は、集めた文字列の中でどの文字列が読まれたかをいち早く 11 つに確定させるべく、各文字列の決まり字の長さを調べておくことにしました。

ここである文字列集合において、要素である各文字列の決まり字の長さは次のように定義されます。


文字列の集合を TT 、文字列 sTs \in T の長さを s|s| とする。
また、ss の先頭から kk 文字を取り出した文字列を、ss の長さ kk の接頭辞と呼ぶ。

文字列 ss の決まり字の長さ AsA_s は、次の条件を満たす最小の整数 kk とする。

  • 1ks1 \leq k \leq |s|
  • 集合 TT に含まれる文字列のうち、“ss の長さ kk の接頭辞”を接頭辞にもつ文字列が、ss ただ 1 つである。

はじめ、文字列の集合 TT は空です。

これから QQ 個の文字列 S1,S2,,SQS_1,S_2,\ldots,S_Q が集合 TT に順番に追加されます。

ii 番目のクエリでは、文字列 SiS_i を新たに追加し、その時点で集合 TT に含まれるすべての文字列の決まり字の長さの総和 sTAs\sum_{s \in T} A_s を出力してください。


制約

  • 1Q3×1051 \leq Q \leq 3 \times 10^5
  • 2Si6×1052 \leq |S_i| \leq 6 \times 10^5
  • SiS_i は英小文字および最後の文字を示す 0 からなる文字列である。
  • SiS_i の最後の文字は 0 である。
  • SiS_i の最後の文字を除いた部分は、すべて英小文字である。
  • S1,S2,,SQS_1,S_2,\ldots,S_Q は相異なる。
  • i=1QSi6×105\displaystyle \sum_{i=1}^{Q} |S_i| \leq 6 \times 10^5

入力

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

QS1S2SQQ\\ S_{1}\\ S_{2}\\ \cdots\\ S_Q

出力

QQ 行出力してください。 ii 行目には、クエリ ii の答えを出力してください。

入力例1

4
apple0
ape0
banana0
app0

出力例1

1
6
7
12

クエリ 11 では、集合 TTapple0 しか存在しないため、apple0 の決まり字の長さは 11 です。

クエリ 22ape0 が追加されると、apple0ape0 は先頭の ap が一致します。そのため、どちらも決まり字の長さは 33 です。

このように既に追加されている文字列の決まり字の長さが増減しうることに注意してください。

クエリ 33 では、集合 TT に接頭辞が b の文字列は banana のみです。そのため、 banana の決まり字の長さは 11 です。また、apple0ape0 の決まり字の長さは増減しません。

入力例2

3
cat0
dog0
fish0

出力例2

1
2
3

どの文字列も先頭文字が異なります。

そのため、すべてのクエリにおいて、すべての文字列の決まり字の長さは 11 です。

入力例3

5
a0
aa0
aaa0
aaaa0
aaaaa0

出力例3

1
4
8
13
19

提出


Go (1.21)