def solve(): S="*"+input(); N=len(S)-1 E=[[r-l<=1 for r in range(N+2)] for l in range(N+2)] for k in range(1,N+1): for l in range(N-k+2): E[l][l+k]=(S[l]==S[l+k-1]) and E[l+1][l+k-1] inf=float("inf") DP=[-inf]*(N+1); DP[0]=inf for i in range(1,N+1): for j in range(1,i+1): if E[j][i+1]: DP[i]=max(DP[i], min(DP[j-1], i-j+1)) return DP[N] #================================================== print(solve())