#include<iostream>
using namespace std;
const int x1[2]={1,0};
const int y1[2]={0,1,};
int a[100][100],i,j,n,m,x0,y0,inceput=1,sfarsit=1,maxim;
char t[100][100];
struct punct
{
    int ls,ld,poz;
};
punct c[100],x,y;
int main()
{
    cout<<"n=";cin>>n;
    cout<<"m=";cin>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            {cin>>t[i][j];
            if(t[i][j]=='.')
                a[i][j]=0;
            else
                a[i][j]=1;
            }
    for(i=0;i<=n+1;i++)
        a[i][0]=a[i][m+1]=1;
    for(i=0;i<=m+1;i++)
        a[0][i]=a[n+1][i]=1;
   c[inceput].ls=1;
   c[inceput].ld=1;
   a[1][1]=1;
   c[inceput].poz=1;
   while(inceput<=sfarsit)
   {
       x=c[inceput];
       inceput++;
       for(int k=0;k<2;k++)
       {
           if(a[x.ls+x1[k]][x.ld+y1[k]]==0)
           {
               y.ls=x.ls+x1[k];
               y.ld=x.ld+y1[k];
               y.poz=x.poz+1;
               a[y.ls][y.ld]=y.poz;
               sfarsit++;
               c[sfarsit]=y;
           }
       }
   }
   for(i=1;i<=n;i++)

   {
       for(j=1;j<=m;j++)
        if(a[i][j]>maxim)
            maxim=a[i][j];

   }
   cout<<maxim<<endl;

}