//AC版
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std ;
string s, t;
int len, MAX = 0;
void Manacher() {
t = "$#" ;
for (int i = 0; s[i]; i++) {
t += s[i] ;
t += "#" ;
}
MAX = 0;
int p[len*2+1];//以i为中心的回文串的长度+1
int Mx = 0, id = 0;//右边界,id为中心点
for (int i = 1; t[i]; i++) {
if(Mx > i) p[i] = min(p[2 * id - i], Mx - i);
else p[i] = 1 ;
//以i为中心,继续向外拓展
while (t[i + p[i]] == t[i - p[i]]) p[i]++ ;
if (Mx < i + p[i]) {//更新边界,中心点
Mx = i + p[i] ;
id = i ;
}
MAX = max(MAX, p[i]);
}
}
int main () {
int cnt = 1;
while(cin >> s) {
if(s[0]=='E') break;
len = s.size();
Manacher();
printf ("Case %d: %d\n", cnt++, MAX-1);
}
return 0;
}