#include using namespace std; using i64 = int64_t; using vi = vector; using vvi = vector; vi manacher(string s) { int n = s.size(); vi ret(n); for (int i = 0, j = 0; i < n;) { while (i - j >= 0 && i + j < n && s[i - j] == s[i + j]) j++; ret[i] = j; int k = 1; while (i - k >= 0 && i + k < n && k + ret[i - k] < j) { ret[i + k] = ret[i - k]; k++; } i += k; j -= k; } return ret; } int main() { string s; cin >> s; string t = "$"; for (char c: s) { t += c; t += '$'; } vi m = manacher(t); int maxlen = *max_element(m.begin(), m.end()) - 1; if (maxlen == s.size()) { cout << maxlen - 1 << endl; } else { cout << maxlen << endl; } }