Module: 動的プログラミングのパターン


Problem

4 /7


文字列圧縮

Problem

クロエは友達に手紙を書きたいと思っています。 Letter - 小文字のラテン文字で構成される文字列 s。
残念なことに、クロエが手紙を書き始めるとすぐに、彼女はそれが長すぎることに気付きました。そこで彼女は、文字列そのものではなく、文字列 s の圧縮バージョンを書きたいと考えています。

文字列 s — の圧縮バージョン。文字列のシーケンス c1, s1, c2, s2,   ..., ck, sk, ここで ci — ai の 10 進数表現 (先行ゼロなし)、および si —小文字のラテン文字の文字列。 Chloe が文字列 s1 を正確に a1 回書き込む場合、s2 は正確に a2 回、ということになります。の場合、文字列 s が生成されます。
圧縮バージョンの長さは |c1| + |s1| + |c2| です。  +  |s2|... |ck| + |sk|.圧縮されたすべてのバージョンの中で、クロエは、長さが最も短いバージョンを選択したいと考えています。クロエができるだけ短い長さを見つけるのを手伝ってください。

入力:
入力の 1 行には、小文字のラテン文字 (1 ≤ |s| ≤ 5000) で構成される文字列 s が含まれています。

出力:
単一の整数を出力します —文字列 s の圧縮バージョンの最小長。

例:
  <本体>

説明:
最初の例では、Chloe は次のバージョンを選択します: c1 — 10, s1 — a.
2 番目の例では、Chloe は次のバージョンを選択します: c1 — 1, s1
3 番目の例では、Chloe は次のバージョンを選択します: c1 — 2, s1 — c, c2 — 1, s2 — z, c3 — 4, s3 — a.
 
入力 出力
あああああああ 3
abcab 6
cczabababab 7