Module: Pattern nella programmazione dinamica


Problem

4 /7


Compressione delle corde

Problem

Chloe vuole scrivere una lettera alla sua amica. Lettera - stringa s, composta da lettere latine minuscole.
Sfortunatamente, non appena Chloe ha iniziato a scrivere la lettera, si è resa conto che era troppo lunga e che ci sarebbe voluto molto tempo per scriverla nella sua interezza. Quindi vuole scrivere una versione compressa della stringa s invece della stringa stessa.

Una versione compressa della stringa s — la sequenza di stringhe c1, s1, c2, s2,  ..., ck, sk, dove ci — rappresentazione decimale di ai (senza zeri iniziali) e si — qualche stringa di lettere latine minuscole. Se Chloe scrive la stringa s1 esattamente una1 volte, allora s2 esattamente una2 volte, e così on , produrrà la stringa s.
La lunghezza della versione compressa è |c1| + |s1| + |c2|  +  |s2|... |ck| + |sk|. Tra tutte le versioni compresse, Chloe vuole scegliere quella con la lunghezza minore. Aiuta Chloe a trovare la lunghezza più breve possibile.

Inserimento:
La singola riga dell'input contiene una stringa s costituita da lettere latine minuscole (1 ≤ |s| ≤ 5000).

Uscita:
Stampa un singolo numero intero — la lunghezza minima della versione compressa della stringa s.

Esempi:
 
Input Uscita
aaaaaaaaaa 3
abcab 6
cczabababab 7


Spiegazioni:
Nel primo esempio, Chloe selezionerà la seguente versione: c1 — 10, s1 — a.
Nel secondo esempio, Chloe selezionerà la seguente versione: c1 — 1, s1 — abcab.
Nel terzo esempio, Chloe sceglierà la seguente versione: c1 — 2, s1 — c, c2 — 1, s2 — z, c3 — 4, s3 — ab.