#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,m;
vector<vector<char>>grid;
vector<vector<ll>>vis;

ll cox[8] = {1, -1, 0, 0, 1, 1, -1, -1};
ll coy[8] = {0, 0, -1, 1, 1, -1, 1, -1};
bool ok(ll nx,ll ny){
    if (nx >= 0 && nx < n && ny >= 0 && ny < m && !vis[nx][ny])return 1;

    return 0;
}
ll mx=0,cnt=0;
void dfs(ll x,ll y){
    vis[x][y]=1;
    cnt++;
    mx=max(mx,cnt);
    for(int i=0;i<8;i++){
        ll nx=x+cox[i];
        ll ny=y+coy[i];
        char ch=grid[x][y]+1;
        if(ok(nx,ny)&&grid[nx][ny]==ch){
            dfs(nx,ny);
        }
    }

}
int main() {
    do{
        int i=1;
        cin>>n>>m;
        if(n==0&&m==0)break;
        vis.assign(n + 1, vector<ll>(m + 1, 0));
        grid.assign(n+1, vector<char>(m + 1, 0));
        mx=0,cnt=0;
        for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin>>grid[i][j];
        for(int i=0;i<n;i++)for(int j=0;j<m;j++){
        if(!vis[i][j]&&grid[i][j]=='A'){
            cnt=0;
            dfs(i,j);
        }
    }
        cout<<"Case "<<i<<": "<<mx<<"\n";

    }while(n!=0&&m!=0);

}
