#include<bits/stdc++.h> using namespace std; struct Node{ int x,y,k; }; int n,m; int fx[4]={0,1,0,-1}; int fy[4]={1,0,-1,0}; char a[41][41]; queue<Node> q; int main(){ cin>>n>>m; q.push({1,1,1}); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; } } while(q.size()>0){ int x=q.front().x; int y=q.front().y; int k=q.front().k; // a[x][y]='#'; if(x==n&&y==m){ cout<<k; return 0; } for(int i=0;i<=3;i++){ int tx=x+fx[i]; int ty=y+fy[i]; if(tx>=1&&tx<=n&&ty>=1&&ty<=n&&a[tx][ty]=='.'){ q.push({tx,ty,k+1}); } } q.pop(); } return 0; } /************************************************************** Problem: 1432 User: chenjingqi Language: C++ Result: Memory Limit Exceed ****************************************************************/