#include #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); string s; int test = 0; while (cin >> s && s != "END") { int n = static_cast(s.size()); vector d1(n), d2(n); for (int i = 0, l = 0, r = -1; i < n; ++i) { int k = (i > r) ? 1 : min(d1[l + r - i], r - i + 1); while (i - k >= 0 && i + k < n && s[i - k] == s[i + k]) ++k; d1[i] = k; if (i + k - 1 > r) l = i - k + 1, r = i + k - 1; } for (int i = 0, l = 0, r = -1; i < n; ++i) { int k = (i > r) ? 0 : min(d2[l + r - i + 1], r - i + 1); while (i - k - 1 >= 0 && i + k < n && s[i - k - 1] == s[i + k]) ++k; d2[i] = k; if (i + k - 1 > r) l = i - k, r = i + k - 1; } int answer = 1; for (int x : d1) answer = max(answer, 2 * x - 1); for (int x : d2) answer = max(answer, 2 * x); cout << "Case " << ++test << ": " << answer << '\n'; } }