#include<stdio.h> #include<stdlib.h> #include<string.h> #define For(i,j,k) for (int i=j;i<=k;i++) const int dmax=1501,d[5][2]={{0,0},{1,0},{0,1},{-1,0},{0,-1}}; bool p[dmax]; char a[dmax][dmax]; int ans,n,m; void dfs(int x,int y,int sum){ if (sum>ans) ans=sum; For(i,1,4){ int tx=x+d[i][0],ty=y+d[i][1]; if (tx<1 || ty<1 || tx>n || ty>m || p[a[tx][ty]]==1) continue; p[a[tx][ty]]=1; dfs(tx,ty,sum+1); p[a[tx][ty]]=0; } } int main(){ while(scanf("%d%d",&n,&m)!=EOF){ getchar(); ans=0; memset(p,0,sizeof(p)); memset(a,0,sizeof(a)); For(i,1,n){ For(j,1,m) a[i][j]=getchar(); getchar(); } p[a[1][1]]=1; dfs(1,1,1); printf("%d\n",ans); } return 0; }