#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; bool rcmp(int a, int b) { return a>b; } typedef long long LL; set nei[5004]; int dp[5004]; char ib[5004]; char mk[5004][5004]; int main() { int n, i, r, s, e, d, j; scanf("%s", ib); for (n=0; ib[n]; n++); for (i=0; i=n) break; if (ib[s]!=ib[e]) break; mk[s][e]=1; } s=i; e=i+1; while(1) { if (s<0||e>=n) break; if (ib[s]!=ib[e]) break; mk[s][e]=1; s--; e++; } } dp[n]=n; for (i=n-1; i>=0; i--) { r=min(1, dp[i+1]); for (j=n-1; j>i; j--) if (mk[i][j]) { d=min(j-i+1, dp[j+1]); r=max(r, d); } dp[i]=r; } printf("%d\n", dp[0]); return 0; }