using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static int[] NList => ReadLine().Split().Select(int.Parse).ToArray(); public static void Main() { Solve(); } static void Solve() { var s = ReadLine(); var pal = new bool[s.Length, s.Length + 1]; for (var i = 0; i < s.Length; ++i) { var d = 0; while (i - d >= 0 && i + d < s.Length && s[i - d] == s[i + d]) { pal[i - d, i + d + 1] = true; ++d; } } for (var i = 0; i + 1 < s.Length; ++i) { var d = 0; while (i - d >= 0 && i + d + 1 < s.Length && s[i - d] == s[i + d + 1]) { pal[i - d, i + d + 2] = true; ++d; } } var dp = new int[s.Length + 1]; for (var i = 1; i <= s.Length; ++i) if (pal[0, i]) dp[i] = i; for (var i = 0; i < s.Length; ++i) for (var j = i + 1; j < dp.Length; ++j) { if (pal[i, j]) dp[j] = Math.Max(dp[j], Math.Min(dp[i], j - i)); } WriteLine(dp[s.Length]); } }