#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <cassert>
#include <cstring>
#include <climits>
#include <iostream>
#include <sstream>
#include <string>
#include <numeric>
#include <utility>
#include <algorithm>
#include <stack>
#include <queue>
#include <vector>
#include <list>
#include <map>
#include <set>
using namespace std;
#define MAX 55
#define pii pair< int, int>
char grid[MAX][MAX],c,str[MAX];
int n, m;
bool inRange(int i, int j)
{
return (i>=0 && i<n && j>=0 && j<m);
}
int main()
{
int i, j;
pii p;
queue< pii > Q;
queue<pii>Q1;
scanf("%d %d",&n,&m);
while(n!=0)
{
int visited[n][m];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
visited[i][j]=0;
}
}
int d=0;
for(i=0; i<n; i++)
{
scanf("%s",str);
for(j=0;j<m;j++)
{
grid[i][j]=str[j];
//printf("%c\n",grid[i][j]);
if(str[j]=='A')
{
//printf("%d %d\n",i,j);
p.first=i;
p.second=j;
Q1.push(p);
}
}
}
while(!Q1.empty())
{
p=Q1.front();
//printf("%d %d\n",p.first,p.second);
Q1.pop();
Q.push(p);
while(!Q.empty())
{
p=Q.front();
i=p.first;
j=p.second;
c=grid[i][j];
Q.pop();
if(inRange(i+1,j) && (int)grid[i+1][j]==(int)grid[i][j]+1&&visited[i+1][j]!=-1)
{
p.first=i+1;
p.second=j;
Q.push(p);
visited[i+1][j]=-1;
}
if(inRange(i-1,j) && (int)grid[i-1][j]==(int)grid[i][j]+1&&visited[i-1][j]!=-1)
{
p.first=i-1;
p.second=j;
Q.push(p);
visited[i-1][j]=-1;
}
if(inRange(i,j+1) && (int)grid[i][j+1]==(int)grid[i][j]+1&&visited[i][j+1]!=-1)
{
p.first=i;
p.second=j+1;
Q.push(p);
visited[i][j+1]=-1;
}
if(inRange(i,j-1) &&(int)grid[i][j-1]==(int)grid[i][j]+1&&visited[i][j-1]!=-1)
{
p.first=i;
p.second=j-1;
Q.push(p);
visited[i][j-1]=-1;
}
if(inRange(i-1,j-1) &&(int)grid[i-1][j-1]==(int)grid[i][j]+1)
{
p.first=i-1;
p.second=j-1;
Q.push(p);
visited[i][j-1]=-1;
}
if(inRange(i+1,j+1) &&(int)grid[i+1][j+1]==(int)grid[i][j]+1&&visited[i+1][j+1]!=-1)
{
p.first=i+1;
p.second=j+1;
Q.push(p);
visited[i+1][j+1]=-1;
}
if(inRange(i+1,j-1) &&(int)grid[i+1][j-1]==(int)grid[i][j]+1&&visited[i+1][j-1]!=-1)
{
p.first=i+1;
p.second=j-1;
Q.push(p);
visited[i+1][j-1]=-1;
}
if(inRange(i-1,j+1) &&(int)grid[i-1][j+1]==(int)grid[i][j]+1&&visited[i-1][j+1]!=-1)
{
p.first=i-1;
p.second=j+1;
Q.push(p);
visited[i-1][j+1]=-1;
}
}
if(((int)c-65)>d)
d=((int)c-65);
}
printf("%d\n",d+1);
scanf("%d %d",&n,&m);
}
}
I2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGNjdHlwZT4KI2luY2x1ZGUgPGNhc3NlcnQ+CiNpbmNsdWRlIDxjc3RyaW5nPgojaW5jbHVkZSA8Y2xpbWl0cz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPG51bWVyaWM+CiNpbmNsdWRlIDx1dGlsaXR5PgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgTUFYIDU1CiNkZWZpbmUgcGlpIHBhaXI8IGludCwgaW50PgpjaGFyIGdyaWRbTUFYXVtNQVhdLGMsc3RyW01BWF07CmludCBuLCBtOwpib29sIGluUmFuZ2UoaW50IGksIGludCBqKQp7CiAgICByZXR1cm4gKGk+PTAgJiYgaTxuICYmIGo+PTAgJiYgajxtKTsKfQppbnQgbWFpbigpCnsKICAgIGludCBpLCBqOwogICAgcGlpIHA7CiAgICBxdWV1ZTwgcGlpID4gUTsKICAgIHF1ZXVlPHBpaT5RMTsKICAgIHNjYW5mKCIlZCAlZCIsJm4sJm0pOwogICAgd2hpbGUobiE9MCkKICAgIHsKICAgICAgICAgICAgICAgaW50IHZpc2l0ZWRbbl1bbV07CiAgICAgICAgICAgICAgIGZvcihpPTA7aTxuO2krKykKICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICBmb3Ioaj0wO2o8bTtqKyspCiAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgdmlzaXRlZFtpXVtqXT0wOwogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgIH0KICAgICAgICBpbnQgZD0wOwogICAgICAgIGZvcihpPTA7IGk8bjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgc2NhbmYoIiVzIixzdHIpOwogICAgICAgICAgICBmb3Ioaj0wO2o8bTtqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGdyaWRbaV1bal09c3RyW2pdOwogICAgICAgICAgICAgICAgLy9wcmludGYoIiVjXG4iLGdyaWRbaV1bal0pOwogICAgICAgICAgICAgICAgaWYoc3RyW2pdPT0nQScpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgLy9wcmludGYoIiVkICVkXG4iLGksaik7CiAgICAgICAgICAgICAgICAgICAgcC5maXJzdD1pOwogICAgICAgICAgICAgICAgICAgIHAuc2Vjb25kPWo7CiAgICAgICAgICAgICAgICAgICAgUTEucHVzaChwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB3aGlsZSghUTEuZW1wdHkoKSkKICAgICAgICB7CiAgICAgICAgICAgIHA9UTEuZnJvbnQoKTsKICAgICAgICAgICAgLy9wcmludGYoIiVkICVkXG4iLHAuZmlyc3QscC5zZWNvbmQpOwogICAgICAgICAgICBRMS5wb3AoKTsKICAgICAgICAgICAgUS5wdXNoKHApOwogICAgICAgICAgICB3aGlsZSghUS5lbXB0eSgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBwPVEuZnJvbnQoKTsKICAgICAgICAgICAgICAgIGk9cC5maXJzdDsKICAgICAgICAgICAgICAgIGo9cC5zZWNvbmQ7CiAgICAgICAgICAgICAgICBjPWdyaWRbaV1bal07CiAgICAgICAgICAgICAgICBRLnBvcCgpOwogICAgICAgICAgICAgICAgaWYoaW5SYW5nZShpKzEsaikgJiYgKGludClncmlkW2krMV1bal09PShpbnQpZ3JpZFtpXVtqXSsxJiZ2aXNpdGVkW2krMV1bal0hPS0xKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHAuZmlyc3Q9aSsxOwogICAgICAgICAgICAgICAgICAgIHAuc2Vjb25kPWo7CiAgICAgICAgICAgICAgICAgICAgUS5wdXNoKHApOwogICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRbaSsxXVtqXT0tMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKGluUmFuZ2UoaS0xLGopICYmIChpbnQpZ3JpZFtpLTFdW2pdPT0oaW50KWdyaWRbaV1bal0rMSYmdmlzaXRlZFtpLTFdW2pdIT0tMSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBwLmZpcnN0PWktMTsKICAgICAgICAgICAgICAgICAgICBwLnNlY29uZD1qOwogICAgICAgICAgICAgICAgICAgIFEucHVzaChwKTsKICAgICAgICAgICAgICAgICAgICB2aXNpdGVkW2ktMV1bal09LTE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZihpblJhbmdlKGksaisxKSAmJiAoaW50KWdyaWRbaV1baisxXT09KGludClncmlkW2ldW2pdKzEmJnZpc2l0ZWRbaV1baisxXSE9LTEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcC5maXJzdD1pOwogICAgICAgICAgICAgICAgICAgIHAuc2Vjb25kPWorMTsKICAgICAgICAgICAgICAgICAgICBRLnB1c2gocCk7CiAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFtpXVtqKzFdPS0xOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoaW5SYW5nZShpLGotMSkgJiYoaW50KWdyaWRbaV1bai0xXT09KGludClncmlkW2ldW2pdKzEmJnZpc2l0ZWRbaV1bai0xXSE9LTEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcC5maXJzdD1pOwogICAgICAgICAgICAgICAgICAgIHAuc2Vjb25kPWotMTsKICAgICAgICAgICAgICAgICAgICBRLnB1c2gocCk7CiAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFtpXVtqLTFdPS0xOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoaW5SYW5nZShpLTEsai0xKSAmJihpbnQpZ3JpZFtpLTFdW2otMV09PShpbnQpZ3JpZFtpXVtqXSsxKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHAuZmlyc3Q9aS0xOwogICAgICAgICAgICAgICAgICAgIHAuc2Vjb25kPWotMTsKICAgICAgICAgICAgICAgICAgICBRLnB1c2gocCk7CiAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFtpXVtqLTFdPS0xOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYoaW5SYW5nZShpKzEsaisxKSAmJihpbnQpZ3JpZFtpKzFdW2orMV09PShpbnQpZ3JpZFtpXVtqXSsxJiZ2aXNpdGVkW2krMV1baisxXSE9LTEpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcC5maXJzdD1pKzE7CiAgICAgICAgICAgICAgICAgICAgcC5zZWNvbmQ9aisxOwogICAgICAgICAgICAgICAgICAgIFEucHVzaChwKTsKICAgICAgICAgICAgICAgICAgICB2aXNpdGVkW2krMV1baisxXT0tMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGluUmFuZ2UoaSsxLGotMSkgJiYoaW50KWdyaWRbaSsxXVtqLTFdPT0oaW50KWdyaWRbaV1bal0rMSYmdmlzaXRlZFtpKzFdW2otMV0hPS0xKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmZpcnN0PWkrMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5zZWNvbmQ9ai0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRLnB1c2gocCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0ZWRbaSsxXVtqLTFdPS0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaW5SYW5nZShpLTEsaisxKSAmJihpbnQpZ3JpZFtpLTFdW2orMV09PShpbnQpZ3JpZFtpXVtqXSsxJiZ2aXNpdGVkW2ktMV1baisxXSE9LTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuZmlyc3Q9aS0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLnNlY29uZD1qKzE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEucHVzaChwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXRlZFtpLTFdW2orMV09LTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoKChpbnQpYy02NSk+ZCkKICAgICAgICAgICAgICAgIGQ9KChpbnQpYy02NSk7CiAgICAgICAgfQogICAgICAgIHByaW50ZigiJWRcbiIsZCsxKTsKICAgICAgICBzY2FuZigiJWQgJWQiLCZuLCZtKTsKICAgIH0KfQo=