#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#define pr pair < int , int >
using namespace std;
int dx[] = {-1,1,0,0};
int dy[] = {0,0,1,-1};
int vis[101][101];
int level[101][101];
char map[101][101];
int main(){
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)cin>>map[i];
if(map[0][0]=='#'){cout<<-1<<endl;return 0;}
queue <pr> q;
q.push(pr(0,0));
vis[0][0]=1;
level[0][0]=0;
while(!q.empty()){
pr x = q.front();
q.pop();
int first = x.first;
int second = x.second;
for(int i=0;i<4;i++){
int f = first + dx[i];
int s = second + dy[i];
if(f>=0 && f<n && s>=0 && s<m && vis[f][s]==0 && map[f][s]!='#'){
vis[f][s]=1;
q.push(pr(f,s));
level[f][s]=level[first][second]+1;
}
}
}
if(vis[n-1][m-1]==0)cout<<-1<<endl;
else cout<<level[n-1][m-1]<<endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGFsZ29yaXRobT4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxxdWV1ZT4KCiNkZWZpbmUgcHIgcGFpciA8IGludCAsIGludCA+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGR4W10gPSB7LTEsMSwwLDB9OwppbnQgZHlbXSA9IHswLDAsMSwtMX07CgppbnQgdmlzWzEwMV1bMTAxXTsKaW50IGxldmVsWzEwMV1bMTAxXTsKCmNoYXIgbWFwWzEwMV1bMTAxXTsKCmludCBtYWluKCl7CiAgICBpbnQgbixtOwogICAgY2luPj5uPj5tOwogICAgZm9yKGludCBpPTA7aTxuO2krKyljaW4+Pm1hcFtpXTsKICAgIGlmKG1hcFswXVswXT09JyMnKXtjb3V0PDwtMTw8ZW5kbDtyZXR1cm4gMDt9CiAgICBxdWV1ZSA8cHI+IHE7CiAgICBxLnB1c2gocHIoMCwwKSk7CiAgICB2aXNbMF1bMF09MTsKICAgIGxldmVsWzBdWzBdPTA7CiAgICB3aGlsZSghcS5lbXB0eSgpKXsKICAgICAgICBwciB4ID0gcS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CiAgICAgICAgaW50IGZpcnN0ID0geC5maXJzdDsKICAgICAgICBpbnQgc2Vjb25kID0geC5zZWNvbmQ7CiAgICAgICAgZm9yKGludCBpPTA7aTw0O2krKyl7CiAgICAgICAgICAgIGludCBmID0gZmlyc3QgKyBkeFtpXTsKICAgICAgICAgICAgaW50IHMgPSBzZWNvbmQgKyBkeVtpXTsKICAgICAgICAgICAgaWYoZj49MCAmJiBmPG4gJiYgcz49MCAmJiBzPG0gJiYgdmlzW2ZdW3NdPT0wICYmIG1hcFtmXVtzXSE9JyMnKXsKICAgICAgICAgICAgICAgIHZpc1tmXVtzXT0xOwogICAgICAgICAgICAgICAgcS5wdXNoKHByKGYscykpOwogICAgICAgICAgICAgICAgbGV2ZWxbZl1bc109bGV2ZWxbZmlyc3RdW3NlY29uZF0rMTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGlmKHZpc1tuLTFdW20tMV09PTApY291dDw8LTE8PGVuZGw7CiAgICBlbHNlIGNvdXQ8PGxldmVsW24tMV1bbS0xXTw8ZW5kbDsKICAgIAogICAgcmV0dXJuIDA7Cn0KCgoK