#include <iostream>
#include <vector>
using namespace std;

int main() {
    string os;
    cin >> os;
    string s {"#"};
    for (auto c : os) {
        s += c;
        s += '#';
    }
    //求最长对称子序列的长度,中心拓展法(n2),马拉车算法(n)
    int n = s.size();
    vector<int> halfsize(n, 0);
    int maxright = 0;
    int maxmid = 0;
    int maxlen = 1;
    for (int mid = 1; mid < n ; mid++) {
        int left, right;
        left = right = mid;
        if (mid < maxright) {
            int leftmid = 2 * mid - maxmid;
            int maxleft = leftmid - halfsize[leftmid];
            right = min(maxright, 2 * maxmid - maxleft);
        }
        left = 2 * mid - right;
        while (left > 0 && right < n - 1 && s[left - 1] == s[right + 1]) {
            left -- ;
            right ++;
        }
        if (right > maxright) {
            maxmid = mid;
            maxright = right;
        }
        int halflen = right - mid;
        halfsize[mid] = halflen;
        maxlen = max(maxlen,halflen);
        if (right == n - 1) {
            break;
        }
    }
    cout << maxlen;
}