Module: Padrões em Programação Dinâmica


Problem

4 /7


Compressão de string

Problem

Chloe quer escrever uma carta para sua amiga. Letra - string s, consistindo em letras latinas minúsculas.
Infelizmente, assim que Chloe começou a escrever a carta, ela percebeu que era muito longa, e levaria muito tempo para escrevê-la inteira. Então ela quer escrever uma versão comprimida da string s ao invés da própria string.

Uma versão compactada da string s — a sequência de strings c1, s1, c2, s2,   ..., ck, sk, onde ci — representação decimal de ai (sem zeros à esquerda) e si — alguma sequência de letras latinas minúsculas. Se Chloe escrever a string s1 exatamente 1 vezes, então s2 exatamente 2 vezes, e assim on , produzirá a string s.
O comprimento da versão comprimida é |c1| + |s1| + |c2|  +  |s2|... |ck| + |sk|. Entre todas as versões comprimidas, Chloe deseja escolher aquela com o menor comprimento. Ajude Chloe a encontrar o menor comprimento possível.

Entrada:
A única linha da entrada contém uma string s que consiste em letras latinas minúsculas (1 ≤ |s| ≤ 5000).

Saída:
Imprima um único inteiro — o comprimento mínimo da versão comprimida da string s.

Exemplos:
 
Entrada Saída
aaaaaaaaa 3
abcab 6
cczabababab 7


Explicações:
No primeiro exemplo, Chloe selecionará a seguinte versão: c1 — 10, s1 — a.
No segundo exemplo, Chloe escolherá a seguinte versão: c1 — 1, s1 — abcab.
No terceiro exemplo, Chloe escolherá a seguinte versão: c1 — 2, s1 — c, c2 — 1, s2 — z, c3 — 4, s3 — ab.