mod = 998244353 def main(): import sys input = sys.stdin.readline S = input().rstrip('\n') N = len(S) G = [[0] * (N+1) for _ in range(N+1)] # odd for m in range(N): G[m][m+1] = 1 for j in range(1, N + 1): if m - j < 0 or m + j >= N: break if S[m - j] == S[m + j]: G[m - j][m + j + 1] = 1 else: break # even for m in range(1, N): for j in range(1, N+1): if m - j < 0 or m + j - 1 >= N: break if S[m - j] == S[m + j - 1]: G[m - j][m + j] = 1 else: break ok = 1 ng = N + 1 mid = (ok + ng) // 2 while ng - ok > 1: dp = [0] * (N+1) dp[0] = 1 for i in range(N): if dp[i] == 0: continue for j in range(mid, N+1): if i + j >= N+1: break if G[i][i+j]: dp[i+j] = 1 if dp[N]: ok = mid else: ng = mid mid = (ok + ng) // 2 print(ok) if __name__ == '__main__': main()