#include using namespace std; const int N = 5050; char s[N]; int n; int ok[N][N], dp[N]; bool p(int l, int r) { if(r - l < 1) return true; if(!ok[l][r]) ok[l][r] = p(l + 1, r - 1) && s[l] == s[r] ? 1 : -1; return ok[l][r] > 0; } int main() { cin >> (s + 1); n = strlen(s + 1); assert(n <= 500); dp[0] = N; for(int i = 1; i <= n; i ++) { for(int j = 1; j <= i; j ++) { if(p(j, i)) dp[i] = max(dp[i], min(dp[j - 1], i - j + 1)); } } cout << dp[n]; }