KSDUPC 2024
コンテスト日時
2024/09/15 (Su) 14:00 - 15:40

G - カラカラしりとり

Ceylon
2
s
1024
MB
250

問題文

高橋くんと青木くんは $N$ ターンのしりとりをします。
以下のルールでしりとりを行います。

  • 高橋くんと青木くんがこの順に $1$ つずつ単語を発することを $1$ ターンとする
  • しりとりで使用する単語の長さは $3$ 以上で英小文字のみからなる
  • 高橋くんと青木くんのどちらかが既に使用した単語を再度使用してはいけない

青木くんは予言者なので、高橋くんは $i \ (1 ≤ i ≤ N)$ ターン目に単語 $S_i$ を使用することがわかっています。

ルールに違反せず、高橋くんの発言にも矛盾しないしないようにしりとりを行います。
青木くんは喉が痛いので使用する単語の長さの合計をできるだけ少なくしたいです。
ルールに違反せず、高橋くんの発言にも矛盾しないしないようにしりとりを行うとき、青木くんが使用する単語の長さの合計の最小値を出力してください。

より厳密には以下のものを出力してください。
英小文字からなる $N$ 個の文字列を $T=(T_1,T_2, \dots ,T_N)$ とします。
以下の条件をすべて満たす $T$ のうち、$\sum_{i=1}^{N}|T_i|$ の最小値を出力してください。

  • $3 ≤ |T_i| (1 ≤ i ≤ N)$
  • $S_i$ の末尾の文字と $T_i$ の先頭の文字が等しい $(1 ≤ i ≤ N)$
  • $T_i$ の末尾の文字と $S_{i+1}$ の先頭の文字が等しい $(1 ≤ i ≤ N-1)$
  • $S_i ≠ T_j(1 ≤ i ≤ N, 1 ≤ j ≤ N)$
  • $T_i ≠ T_j (1 ≤ i ≤ N, 1 ≤ j ≤ N,i≠j)$

制約

  • $1 ≤ N ≤ 2×10^{5}$
  • $S_i$ は英小文字からなる文字列
  • $3 ≤ |S_i| ≤ 10$
  • $S_i ≠ S_j (i≠j)$
  • 入力される数値は全て整数

入力

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

$N$
$S_1$
$S_2$
$\vdots$
$S_N$

出力

答えを出力してください。

入力例 1
2 abc gfa
出力例 1
6

T = ( cdg, arc ) のとき、条件をすべて満たしており、青木くんが使用する単語の長さの合計は $6$ です。
青木くんが使用する単語の文字数の合計の最小値は $6$ であるため、$6$ を出力します。
その他、T = ( cpg, all ) のときも、条件をすべて満たし単語の長さの合計が最小となります。

高橋くんと青木くんのどちらかが 1 度使用した単語をもう一度使用することはできないことに注意してください。
例えば、T = ( cdg, abc ) は abc を二度使用することになるため条件を満たしません。

入力例 2
14 aaa aba aca ada aea afa aga aha aia aja aka ala ama ana
出力例 2
43
入力例 3
2 kyosan doshisha
出力例 3
6
提出
C++23 (g++ 12.2.0)