#include <bits/stdc++.h>
using namespace std;
int r,c,a[30][30],Next[4][2]={{1,0},{0,1},{-1,0},{0,-1}};
bool f[30];
int dfs(int x,int y,int t){
f[a[x][y]-'A'+1]=true;
int k=0;
for(int i=0;i<4;i++){
int tx=x+Next[i][0];
int ty=y+Next[i][1];
if(tx>0 && ty>0 && tx<=r && ty<=c && !f[a[tx][ty]-'A'+1])
k=max(k,dfs(tx,ty,t+1)+1);
}
f[a[x][y]-'A'+1]=false;
return k;
}
int main(){
cin>>r>>c;
for(int i=1;i<=r;i++){
string s;
cin>>s;
for(int j=0;j<s.size();j++)
a[i][j+1]=s[j];
}
cout<<dfs(1,1,1)+1;
return 0;
}