#include <iostream>

using namespace std;

int cl[2] = {0,1}, ln[2] = {1, 0};
int x[101][101];
int n,m;

int maxx;

void dfs(int i, int j)
{
    for(int k=0;k<2;++k)
    {
        int vl, vc;
        vl = i + ln[k];
        vc = j + cl[k];
        if(vl<=n&&vc<=m)
        if(x[vl][vc] != -1 && (x[i][j] + 1 > x[vl][vc]))
        {
            x[vl][vc] = x[i][j] + 1;
            maxx = max(maxx,x[vl][vc]);
            dfs(vl,vc);
        }
    }
}

void citire()
{
    char a[101][101];
    cin>>n>>m;
    for(int i=1;i<=n;++i){
        cin>>a[i];
    }
    for(int i=1;i<=n;++i)
    {
        for(int j =0;j<m;++j)
        {
            if(a[i][j] == '.')
                x[i][j+1] = 0;
            else x[i][j+1] = -1;
        }
    }
}

int main()
{
    citire();
    if(x[1][1] != -1){
    dfs(1,1);
    cout<<maxx+1;
    }
    else cout<<0;
    return 0;
}