#include <iostream>

using namespace std;
struct co
{
    int x,y,d;
};
co Coada[5000],X;
int T[105][105],maxim;
int n,m;
int main()
{
    int i,j;
    char c;
    cin>>n>>m;
    cin.get(c);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            cin.get(c);
            if(c=='.') T[i][j]=0;
            else T[i][j]=-1;
        }
        cin.get(c);
    }
    for(i=0;i<=n+1;i++)
            T[i][0]=T[i][m+1]=-1;
    for(i=0;i<=m+1;i++) T[0][i]=T[n+1][i]=-1;
    int ic=1;
    int sc=1;
    T[1][1]=1;
    Coada[1].x=1;
    Coada[1].y=1;
    Coada[1].d=1;
    while(ic<=sc)
    {
        X=Coada[ic];
        if(T[X.x+1][X.y]==0)
        {
            T[X.x+1][X.y]=X.d+1;
            sc++;
            Coada[sc].x=X.x+1;
            Coada[sc].y=X.y;
            Coada[sc].d=X.d+1;
        }
        if(T[X.x][X.y+1]==0)
        {
            T[X.x][X.y+1]=X.d+1;
            sc++;
            Coada[sc].x=X.x;
            Coada[sc].y=X.y+1;
            Coada[sc].d=X.d+1;
        }
        ic++;
    }
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(T[i][j]>maxim) maxim=T[i][j];
     cout<<maxim;
}