def longest_palindrome(s: str) -> int:
n = len(s)
if n < 2:
return n
# 初始化 dp 数组
dp = [[False] * n for _ in range(n)]
max_len = 1
# 单个字符总是回文
for i in range(n):
dp[i][i] = True
max_len = max(max_len, 1)
# 两个字符相同的字符也是回文
for i in range(n - 1):
if s[i] == s[i + 1]:
dp[i][i + 1] = True
max_len = max(max_len, 2)
# 检查更长的回文
for length in range(3, n + 1):
for i in range(n - length + 1):
j = i + length - 1
if s[i] == s[j] and dp[i + 1][j - 1]:
dp[i][j] = True
max_len = max(max_len, length)
return max_len
# 示例输入
s = input().strip()
# 输出最长有效密码串的长度
print(longest_palindrome(s))