#include<cstdio> #include<queue> using namespace std; char mat[101][101]; int lmax[101][101]; int n,m; queue <int> qx; queue <int> qy; int lee() { int xn, yn; int x,y; if(mat[0][0]=='.') { lmax[0][0]=1; qx.push(0); qy.push(0); } while(!qx.empty()) { x=qx.front(); qx.pop(); y=qy.front(); qy.pop(); xn=x+1; yn=y; if((xn<n)&&(mat[xn][yn]=='.')&&(lmax[xn][yn]<(lmax[x][y]+1))) { qx.push(xn); qy.push(yn); lmax[xn][yn]=lmax[x][y]+1; } xn=x; yn=y+1; if((yn<m)&&(mat[xn][yn]=='.')&&(lmax[xn][yn]<(lmax[x][y]+1))) { qx.push(xn); qy.push(yn); lmax[xn][yn]=lmax[x][y]+1; } } } int main() { int i,j; int maxi=0; scanf("%d %d\n",&n,&m); for(i=0;i<n;i++) scanf("%s",mat[i]); lee(); for(i=0;i<n;i++) for(j=0;j<m;j++) if(lmax[i][j]>maxi) maxi=lmax[i][j]; printf("%d\n",maxi); return 0; }