P0427

[SCOI2003]字符串折叠

[SCOI2003]字符串折叠

折叠的定义如下:

  1. 一个字符串可以看成它自身的折叠,记作 S→SS\to S;
  2. X(S)X(S) 是 XX(X>1X>1)个 SS 连接在一起的串的折叠,记作 X(S)→SS⋯S⏟X 个 SX(S)\to \underbrace{SS\cdots S}_{X\ \text{个}\ S};
  3. 如果 A→A′A\to A',B→B′B\to B',则 AB→A′B′AB\to A'B'。

例如,因为 3(A)=AAA3(A)=AAA,2(B)=BB2(B)=BB,所以 3(A)C2(B)→AAACBB3(A)C2(B)\to AAACBB,而 2(3(A)C)2(B)→AAACAAACBB2(3(A)C)2(B)\to AAACAAACBB。

给一个字符串,求它的最短折叠。例如 AAAAAAAAAABABABCCD 的最短折叠为 9(A)3(AB)CCD。

输入格式

仅一行,即字符串 SS。

输出格式

仅一行,即最短的折叠长度。

样例输入

NEERCYESYESYESNEERCYESYESYES

样例输出

14

样例解释

一个最短的折叠为 2(NEERC3(YES)),长度为 1414。

数据范围

  • SS 的长度不超过 100100。

来源与许可

本题为 SCOI 2003 试题「字符串折叠」,题面与测试数据整理自 BZOJ 1090。

样例 1

输入

NEERCYESYESYESNEERCYESYESYES

输出

14