#include <bits/stdc++.h>
#define x first
#define y second

using namespace std;

int maxim=0, n, m, a[105][105];

void bord()
{
    for(int i=0;i<=n+1;i++)
        a[i][0]=a[i][m+1]=-1;

    for(int i=0;i<=m+1;i++)
        a[0][i]=a[n+1][i]=-1;
}

void lee()
{
    queue <pair<int, int> > q;

    q.push({1,1});
    a[1][1]=1;
    while(!q.empty())
    {
        pair <int, int> ar=q.front();
        q.pop();
        if(a[ar.x][ar.y+1]==0)
        {
            a[ar.x][ar.y+1]=a[ar.x][ar.y]+1;
            if(a[ar.x][ar.y+1]>maxim)
                maxim=a[ar.x][ar.y+1];
            q.push({ar.x, ar.y+1});
        }
        if(a[ar.x+1][ar.y]==0)
        {
            a[ar.x+1][ar.y]=a[ar.x][ar.y]+1;
            if(a[ar.x+1][ar.y]>maxim)
                maxim=a[ar.x+1][ar.y];
            q.push({ar.x+1, ar.y});
        }
    }


}

int main()
{
cin>>n>>m;
char c;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin>>c;
            if(c=='.')
            a[i][j]=0;
            else a[i][j]=-1;
        }
    }
    bord();

    lee();

    cout<<maxim;

    return 0;
}