#include <bits/stdc++.h>
using namespace std;
int getLength(string str, int l, int r){
while(l >= 0 && r < str.size() && str[l] == str[r]){
l--;
r++;
}
return r - l - 1;
}
//最大回文子串
void process(string str, int& res){
//dp[i][j]:字符串s在[i, j]范围内最长的回文子串的长度为dp[i][j]。
int n = str.size();
vector<vector<bool>> dp(n, vector<bool>(n, false));
for(int i = 0; i < n; i++){
dp[i][i] = true;//一个字符的回文子序列长度就是1。
}
for(int i = n - 1; i >= 0; i--){
for(int j = i; j < n; j++){ //
if(str[i] == str[j]){
if(j - i <= 2){
dp[i][j] = true; //
}
else{
dp[i][j] = dp[i + 1][j - 1];
}
}
//取最长回文子串
if(dp[i][j] && j - i + 1 > res){
//s = str.substr(i, j - i + 1);
res = j - i + 1;
}
}
}
/*//中心扩展法
int n = str.size();
for(int i = 0; i < n; i++){
//ABA
int l1 = getLength(str, i, i);
//ABBA
int l2 = getLength(str, i, i + 1);
res = max(res, l1 > l2 ? l1 : l2);
}*/
}
int main(){
string str = "";
cin >> str;
int res = 0;
process(str, res);
cout << res << endl;
return 0;
}