折叠的定义如下:
- 一个字符串可以看成它自身的折叠,记作 S→S;
- X(S) 是 X(X>1)个 S 连接在一起的串的折叠,记作 X(S)→X 个 SSS⋯S;
- 如果 A→A′,B→B′,则 AB→A′B′。
例如,因为 3(A)=AAA,2(B)=BB,所以 3(A)C2(B)→AAACBB,而 2(3(A)C)2(B)→AAACAAACBB。
给一个字符串,求它的最短折叠。例如 AAAAAAAAAABABABCCD 的最短折叠为 9(A)3(AB)CCD。
输入格式
仅一行,即字符串 S。
输出格式
仅一行,即最短的折叠长度。
样例输入
NEERCYESYESYESNEERCYESYESYES
样例输出
14
样例解释
一个最短的折叠为 2(NEERC3(YES)),长度为 14。
数据范围
来源与许可
本题为 SCOI 2003 试题「字符串折叠」,题面与测试数据整理自 BZOJ 1090。