#include<stdio.h>
using namespace std;
struct coada { int x,y;};
int a[102][102],b[102][102];
coada c[10002];
int main()
{
    /*freopen("date.in","r",stdin);
    freopen("date.out","w",stdout);*/

    char ch; int n,m,i,j,p,u,x,y;

    scanf("%d%d",&n,&m);scanf("%c",&ch);
    for(i=1;i<=n;i++){for(j=1;j<=m;j++)
       { scanf("%c",&ch); if(ch=='.')a[i][j]=1; else a[i][j]=0; }
    scanf("%c",&ch);
    }

    //for(i=1;i<=n;i++){for(j=1;j<=m;j++)printf("%d ",a[i][j]); printf("\n");}
    //LEE:

    p=u=1; c[p].x=1; c[p].y=1; b[1][1]=1; int maxim=0;
    while(p<=u){

        x=c[p].x; y=c[p].y;
        if(a[x+1][y]==1){b[x+1][y]=b[x][y]+1; u++; c[u].x=x+1; c[u].y=y; if(b[x+1][y]>maxim)maxim=b[x+1][y];}
        if(a[x][y+1]==1){b[x][y+1]=b[x][y]+1; u++; c[u].x=x; c[u].y=y+1; if(b[x][y+1]>maxim)maxim=b[x][y+1];}

        p++;
    }

    printf("%d",maxim);

    return 0;
}