#include <bits/stdc++.h>
#define ll long long
#define endl "\n"
#define vi vector<int>
#define all(v) v.begin(), v.end()
#define SORT(v) sort(all(v))
#define SORTX(v) sort(v.begin(), v.end(), greater<int>())
#define read(a) for (auto &i : a) cin >> i
#define Printv(a) for (auto &i : a) cout << i << " "
#define M_ShahaT ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define files freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
using namespace std;
/*
وَأَن لَّيْسَ لِلْإِنسَانِ إِلَّا مَا سَعَى ﴿39﴾
وَأَنَّ سَعْيَهُ سَوْفَ يُرَى ﴿40﴾
ثُمَّ يُجْزَاهُ الْجَزَاء الْأَوْفَى ﴿41﴾
*/
int dx[] = {1, 0, -1, 0, -1, -1, 1, 1};
int dy[] = {0, -1, 0, 1, -1, 1, -1, 1};
char di[] = {'D', 'L', 'U', 'R'};
const int N=1e5+5;
int n,m;
vector<int>adj[N];
vector<vector<char>>grid;
vector<vector<bool>>vis;
bool valid(int i,int j){
return i>=0 && i<n &&j>=0&&j<m;
}
int ans=0;
void dfs(int i,int j,int cnt=1){
vis[i][j]=true;
ans=max(ans,cnt);
for(int d=0;d<8;d++){
int nx=dx[d]+i;
int ny=dy[d]+j;
if(valid(nx,ny) && !vis[nx][ny] && grid[nx][ny]==grid[i][j]+1) {
dfs(nx,ny,cnt+1);
}
}
vis[i][j]=false;
}
void solve_case() {
// while(true) {
cin >> n >> m;
//if(n==0&&m==0)break;
grid.resize(n, vector<char>(m));
vis.assign(n, vector<bool>(m, false));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> grid[i][j];
}
}
int out = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (grid[i][j] == 'A') {
ans = 0;
vis.assign(n, vector<bool>(m, false));
dfs(i, j);
out = max(ans, out);
}
}
}
cout <<"Case 1: "<< out << endl;
}
//}
int main() {
M_ShahaT
int t=1;
// cin >> t;
for(int i=1;i<=t;i++){
solve_case();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgdmkgdmVjdG9yPGludD4KI2RlZmluZSBhbGwodikgdi5iZWdpbigpLCB2LmVuZCgpCiNkZWZpbmUgU09SVCh2KSBzb3J0KGFsbCh2KSkKI2RlZmluZSBTT1JUWCh2KSBzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSwgZ3JlYXRlcjxpbnQ+KCkpCiNkZWZpbmUgcmVhZChhKSBmb3IgKGF1dG8gJmkgOiBhKSBjaW4gPj4gaQojZGVmaW5lIFByaW50dihhKSBmb3IgKGF1dG8gJmkgOiBhKSBjb3V0IDw8IGkgPDwgIiAiCiNkZWZpbmUgTV9TaGFoYVQgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwojZGVmaW5lIGZpbGVzICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOyBmcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwoKCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwovKgogICAg2YjZjtij2Y7ZhiDZhNmR2Y7ZitmS2LPZjiDZhNmQ2YTZktil2ZDZhtiz2Y7Yp9mG2ZAg2KXZkNmE2ZHZjtinINmF2Y7YpyDYs9mO2LnZjtmJIO+0vzM577S+CiAgICDZiNmO2KPZjtmG2ZHZjiDYs9mO2LnZktmK2Y7Zh9mPINiz2Y7ZiNmS2YHZjiDZitmP2LHZjtmJIO+0vzQw77S+CiAgICDYq9mP2YXZkdmOINmK2Y/YrNmS2LLZjtin2YfZjyDYp9mE2ZLYrNmO2LLZjtin2KEg2KfZhNmS2KPZjtmI2ZLZgdmO2Ykg77S/NDHvtL4KKi8KaW50IGR4W10gPSB7MSwgMCwgLTEsIDAsIC0xLCAtMSwgMSwgMX07CmludCBkeVtdID0gezAsIC0xLCAwLCAxLCAtMSwgMSwgLTEsIDF9OwpjaGFyIGRpW10gPSB7J0QnLCAnTCcsICdVJywgJ1InfTsKY29uc3QgaW50IE49MWU1KzU7CgoKaW50IG4sbTsKdmVjdG9yPGludD5hZGpbTl07Cgp2ZWN0b3I8dmVjdG9yPGNoYXI+PmdyaWQ7CnZlY3Rvcjx2ZWN0b3I8Ym9vbD4+dmlzOwpib29sIHZhbGlkKGludCBpLGludCBqKXsKICAgIHJldHVybiBpPj0wICYmIGk8biAmJmo+PTAmJmo8bTsKfQppbnQgYW5zPTA7CnZvaWQgZGZzKGludCBpLGludCBqLGludCBjbnQ9MSl7CiAgICB2aXNbaV1bal09dHJ1ZTsKICAgIGFucz1tYXgoYW5zLGNudCk7CiAgICBmb3IoaW50IGQ9MDtkPDg7ZCsrKXsKICAgICAgICBpbnQgbng9ZHhbZF0raTsKICAgICAgICBpbnQgbnk9ZHlbZF0rajsKICAgICAgICBpZih2YWxpZChueCxueSkgJiYgIXZpc1tueF1bbnldICYmIGdyaWRbbnhdW255XT09Z3JpZFtpXVtqXSsxKSB7CiAgICAgICAgZGZzKG54LG55LGNudCsxKTsKICAgIH0KfQp2aXNbaV1bal09ZmFsc2U7CgoKfQoKdm9pZCBzb2x2ZV9jYXNlKCkgewogICAvLyB3aGlsZSh0cnVlKSB7CiAgICAgICAgY2luID4+IG4gPj4gbTsKLy9pZihuPT0wJiZtPT0wKWJyZWFrOwogICAgICAgIGdyaWQucmVzaXplKG4sIHZlY3RvcjxjaGFyPihtKSk7CiAgICAgICAgdmlzLmFzc2lnbihuLCB2ZWN0b3I8Ym9vbD4obSwgZmFsc2UpKTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG07IGorKykgewogICAgICAgICAgICAgICAgY2luID4+IGdyaWRbaV1bal07CgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGludCBvdXQgPSAwOwogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbTsgaisrKSB7CiAgICAgICAgICAgICAgICBpZiAoZ3JpZFtpXVtqXSA9PSAnQScpIHsKICAgICAgICAgICAgICAgICAgICBhbnMgPSAwOwoKICAgICAgICAgICAgICAgICAgICB2aXMuYXNzaWduKG4sIHZlY3Rvcjxib29sPihtLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgICAgIGRmcyhpLCBqKTsKICAgICAgICAgICAgICAgICAgICBvdXQgPSBtYXgoYW5zLCBvdXQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb3V0IDw8IkNhc2UgMTogIjw8IG91dCA8PCBlbmRsOwogICAgfQovL30KCgppbnQgbWFpbigpIHsKICAgIE1fU2hhaGFUCgoKICAgIGludCB0PTE7CgogICAvLyBjaW4gPj4gdDsKICAgIGZvcihpbnQgaT0xO2k8PXQ7aSsrKXsKCiAgICAgICAgc29sdmVfY2FzZSgpOwoKICAgIH0KICAgIHJldHVybiAwOwp9