s = input(); n = len(s) rl = [{i-1} for i in range(n)] for i in range(n-1): if s[i]==s[i+1]: rl[i+1].add(i-1) for d in range(3,n+1): for l in range(-1,n-d): if s[l+1]==s[l+d] and l+1 in rl[l+d-1]: rl[l+d].add(l) dp = [0]*n+[n] for r in range(n): for l in rl[r]: dp[r] = max(dp[r],min(dp[l],r-l)) print(dp[n-1])