#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;
}