#include <iostream> using namespace std; int a[110][110]; char x; struct { int x,y; }coada[210]; int n,m,i,j,maxi; int lee(int x,int y) { int st,dr; st=dr=0; while(st<=dr) { st++; if(a[x][y+1]==0&&y<m) { dr++; coada[dr].x=x; coada[dr].y=y+1; a[x][y+1]=a[x][y]+1; maxi=a[x][y+1]>maxi?a[x][y+1]:maxi; } if(a[x+1][y]==0&&x<n) { dr++; coada[dr].x=x+1; coada[dr].y=y; a[x+1][y]=a[x][y]+1; maxi=a[x+1][y]>maxi?a[x+1][y]:maxi; } x=coada[st].x; y=coada[st].y; } return maxi; } int main() { cin>>n>>m; for(i=1;i<=n;i++) for(j=1;j<=m;j++) { cin>>x; a[i][j]=x=='.'?0:-1; } if(!a[1][1]) { a[1][1]=1; maxi=1; } cout<<lee(1,1); return 0; }