#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[2004]; int main() { int n, i, r, s, e, d; scanf("%s", ib); for (n=0; ib[n]; n++); for (i=0; i=n) break; if (ib[s]!=ib[e]) break; nei[s].insert(e); } s=i; e=i+1; while(1) { if (s<0||e>=n) break; if (ib[s]!=ib[e]) break; nei[s].insert(e); s--; e++; } } dp[n]=n; for (i=n-1; i>=0; i--) { r=min(1, dp[i+1]); for (auto ni : nei[i]) { d=min(ni-i+1, dp[ni+1]); r=max(r, d); } dp[i]=r; } printf("%d\n", dp[0]); return 0; }