#include<bits/stdc++.h>
using namespace std;
struct node
{
int x;
int y;
int s;
} que[10001];
int head,tail,r,s,p,q;
char c[1001][1001];
bool flag;
int a[4]={-1,1,0,0},b[4]={0,0,-1,1};
bool f[1001][1001];
void bfs()
{
while(head<tail)
{
for(int i=0;i<=3;i++)
{
int xx=que[head].x+a[i];
int yy=que[head].y+b[i];
if(xx>=1&&xx<=r&&yy>=1&&yy<=s&&c[xx][yy]=='.'&&!f[xx][yy])
{
f[xx][yy]=1;
que[tail].x=xx;
que[tail].y=yy;
que[tail].s=que[head].s+1;
tail++;
}
if(xx==p&&yy==q)
{
flag=1;
break;
}
}
if(flag==1) break;
head++;
}
}
int main()
{
cin>>r>>s;
for(int i=1;i<=r;i++)
{
for(int j=1;j<=s;j++)
{
cin>>c[i][j];
}
}
p=r;q=s;
head=1;tail=1;
que[tail].x=1; que[tail].y=1; que[tail].s=0+1;
tail++;
f[1][1]=1;
flag=0;
bfs();
cout<<que[tail].s<<endl;
return 0;
}