#include<bits/stdc++.h>
using namespace std;
int arr[50][50];
//int info[50][50];
int h,w;
int func(int a,int b);
int main()
{
int i,j,tc=0,temp,ans;
vector<pair<int,int>> positions;
char ch;
while(cin>>h>>w){
tc++;
if(h==0 && w==0)
return 0;
for(i=0;i<h;i++){
for(j=0;j<w;j++){
cin>>ch;
if(ch=='A')
positions.push_back({i,j});
arr[i][j]=int(ch)-64;
}
}
ans=func(positions[0].first,positions[0].second);
for(i=1;i<positions.size();i++){
temp=func(positions[i].first,positions[i].second);
if(temp>ans)
ans=temp;
}
cout<<"Case "<<tc<<": "<<ans<<endl;
positions.clear();
}
return 0;
}
int func(int a,int b)
{
int i,j,length,flag,ans=0;
stack<pair<int,int>> stk;
stk.push({a,b});
while(!stk.empty()){
flag=0;
i=stk.top().first;
j=stk.top().second;
length=arr[i][j];
length++;
stk.pop();
//left
if(j-1>=0 && arr[i][j-1]==length){
stk.push({i,j-1});
flag=1;
}
//right
if(j+1<w && arr[i][j+1]==length){
stk.push({i,j+1});
flag=1;
}
//top
if(i-1>=0 && arr[i-1][j]==length){
stk.push({i-1,j});
flag=1;
}
//down
if(i+1<h && arr[i+1][j]==length){
stk.push({i+1,j});
flag=1;
}
//NW
if((i-1>=0&&j-1>=0) && arr[i-1][j-1]==length){
stk.push({i-1,j-1});
flag=1;
}
//NE
if((i-1>=0&&j+1<w) && arr[i-1][j+1]==length){
stk.push({i-1,j+1});
flag=1;
}
//SW
if((i+1<h&&j-1>=0) && arr[i+1][j-1]==length){
stk.push({i+1,j-1});
flag=1;
}
//SE
if((i+1<h&&j+1<w) && arr[i+1][j+1]==length){
stk.push({i+1,j+1});
flag=1;
}
if(flag==0){
if(length-1>ans)
ans=length-1;
}
}
return ans;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGFycls1MF1bNTBdOwovL2ludCBpbmZvWzUwXVs1MF07CmludCBoLHc7CmludCBmdW5jKGludCBhLGludCBiKTsKaW50IG1haW4oKQp7CiAgICBpbnQgaSxqLHRjPTAsdGVtcCxhbnM7CiAgICB2ZWN0b3I8cGFpcjxpbnQsaW50Pj4gcG9zaXRpb25zOwogICAgY2hhciBjaDsKICAgIHdoaWxlKGNpbj4+aD4+dyl7CiAgICAgICAgdGMrKzsKICAgICAgICBpZihoPT0wICYmIHc9PTApCiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIGZvcihpPTA7aTxoO2krKyl7CiAgICAgICAgICAgIGZvcihqPTA7ajx3O2orKyl7CiAgICAgICAgICAgICAgICBjaW4+PmNoOwogICAgICAgICAgICAgICAgaWYoY2g9PSdBJykKICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbnMucHVzaF9iYWNrKHtpLGp9KTsKICAgICAgICAgICAgICAgIGFycltpXVtqXT1pbnQoY2gpLTY0OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGFucz1mdW5jKHBvc2l0aW9uc1swXS5maXJzdCxwb3NpdGlvbnNbMF0uc2Vjb25kKTsKICAgICAgICBmb3IoaT0xO2k8cG9zaXRpb25zLnNpemUoKTtpKyspewogICAgICAgICAgICB0ZW1wPWZ1bmMocG9zaXRpb25zW2ldLmZpcnN0LHBvc2l0aW9uc1tpXS5zZWNvbmQpOwogICAgICAgICAgICBpZih0ZW1wPmFucykKICAgICAgICAgICAgICAgIGFucz10ZW1wOwogICAgICAgIH0KICAgICAgICBjb3V0PDwiQ2FzZSAiPDx0Yzw8IjogIjw8YW5zPDxlbmRsOwogICAgICAgIHBvc2l0aW9ucy5jbGVhcigpOwogICAgfQogICAgcmV0dXJuIDA7Cn0KaW50IGZ1bmMoaW50IGEsaW50IGIpCnsKICAgIGludCBpLGosbGVuZ3RoLGZsYWcsYW5zPTA7CiAgICBzdGFjazxwYWlyPGludCxpbnQ+PiBzdGs7CiAgICBzdGsucHVzaCh7YSxifSk7CiAgICB3aGlsZSghc3RrLmVtcHR5KCkpewogICAgICAgICAgICBmbGFnPTA7CiAgICAgICAgaT1zdGsudG9wKCkuZmlyc3Q7CiAgICAgICAgaj1zdGsudG9wKCkuc2Vjb25kOwogICAgICAgIGxlbmd0aD1hcnJbaV1bal07CiAgICAgICAgbGVuZ3RoKys7CiAgICAgICAgc3RrLnBvcCgpOwogICAgICAgIC8vbGVmdAogICAgICAgIGlmKGotMT49MCAmJiBhcnJbaV1bai0xXT09bGVuZ3RoKXsKICAgICAgICAgICAgc3RrLnB1c2goe2ksai0xfSk7CiAgICAgICAgICAgIGZsYWc9MTsKICAgICAgICB9CiAgICAgICAgLy9yaWdodAogICAgICAgIGlmKGorMTx3ICYmIGFycltpXVtqKzFdPT1sZW5ndGgpewogICAgICAgICAgICBzdGsucHVzaCh7aSxqKzF9KTsKICAgICAgICAgICAgZmxhZz0xOwogICAgICAgIH0KICAgICAgICAvL3RvcAogICAgICAgIGlmKGktMT49MCAmJiBhcnJbaS0xXVtqXT09bGVuZ3RoKXsKICAgICAgICAgICAgc3RrLnB1c2goe2ktMSxqfSk7CiAgICAgICAgICAgIGZsYWc9MTsKICAgICAgICB9CiAgICAgICAgLy9kb3duCiAgICAgICAgaWYoaSsxPGggJiYgYXJyW2krMV1bal09PWxlbmd0aCl7CiAgICAgICAgICAgIHN0ay5wdXNoKHtpKzEsan0pOwogICAgICAgICAgICBmbGFnPTE7CiAgICAgICAgfQogICAgICAgIC8vTlcKICAgICAgICBpZigoaS0xPj0wJiZqLTE+PTApICYmIGFycltpLTFdW2otMV09PWxlbmd0aCl7CiAgICAgICAgICAgIHN0ay5wdXNoKHtpLTEsai0xfSk7CiAgICAgICAgICAgIGZsYWc9MTsKICAgICAgICB9CiAgICAgICAgLy9ORQogICAgICAgIGlmKChpLTE+PTAmJmorMTx3KSAmJiBhcnJbaS0xXVtqKzFdPT1sZW5ndGgpewogICAgICAgICAgICBzdGsucHVzaCh7aS0xLGorMX0pOwogICAgICAgICAgICBmbGFnPTE7CiAgICAgICAgfQogICAgICAgIC8vU1cKICAgICAgICBpZigoaSsxPGgmJmotMT49MCkgJiYgYXJyW2krMV1bai0xXT09bGVuZ3RoKXsKICAgICAgICAgICAgc3RrLnB1c2goe2krMSxqLTF9KTsKICAgICAgICAgICAgZmxhZz0xOwogICAgICAgIH0KICAgICAgICAvL1NFCiAgICAgICAgaWYoKGkrMTxoJiZqKzE8dykgJiYgYXJyW2krMV1baisxXT09bGVuZ3RoKXsKICAgICAgICAgICAgc3RrLnB1c2goe2krMSxqKzF9KTsKICAgICAgICAgICAgZmxhZz0xOwogICAgICAgIH0KICAgICAgICBpZihmbGFnPT0wKXsKICAgICAgICAgICAgaWYobGVuZ3RoLTE+YW5zKQogICAgICAgICAgICAgICAgYW5zPWxlbmd0aC0xOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBhbnM7Cn0KCgo=