#include <bits/stdc++.h>

using namespace std;

long long hd[8]={-1,-1,0,1,1,1,0,-1};
long long wd[8]={0,1,1,1,0,-1,-1,-1};
long long h,w,a[501][501];

long long f()
{
    long long v[h][w];
    for(long long i=0;i<h;i++)
        for(long long j=0;j<w;j++)
        v[i][j]=0;
    v[0][0]=1;
    queue<long long> qh;
    queue<long long> qw;
    queue<long long> d;
    qh.push(0);
    qw.push(0);
    d.push(0);
    while(qh.empty()==false)
    {
        long long ch=qh.front();
        long long cw=qw.front();
        long long cd=d.front();
        if(ch==h-1&&cw==w-1)
            return cd;
        qh.pop();
        qw.pop();
        d.pop();
        for(long long i=0;i<8;i++)
        {
            long long hh=ch+hd[i];
            long long ww=cw+wd[i];
            if((hh>=0)&&(hh<h)&&(ww>=0)&&(ww<w)&&a[hh][ww]==0&&v[hh][ww]==0)
            {
                v[hh][ww]=1;
                qh.push(hh);
                qw.push(ww);
                d.push(cd+1);
            }
        }
    }
    return -1;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>h>>w;
    for(long long i=0;i<h;i++)
        for(long long j=0;j<w;j++)
    {
        char c;
        cin>>c;
        if(c=='.')
            a[i][j]=0;
        else a[i][j]=1;
    }
    cout<<f();

}