#include <iostream> #include <fstream> #include <queue> #include <string> #include <vector> using namespace std; ifstream f("fisier.txt"); struct point{ int i, j, value; }; int v[102][102],n,m; void citire(){ int i, j, nr; char line; for(i=0; i<n; i++){ for(j=0; j<m; j++){ scanf("%c", &line); if(line=='.') nr=0; else nr=-1; v[i][j]=nr; } fflush(stdin); } } int solution(){ int finishPoint=0, actualI, actualJ; queue<point> coada; point start, lastElement, newElement; start.i = 0; start.j = 0; start.value = 1; if(v[0][0]==0){ v[0][0]=1; coada.push(start); } while(!coada.empty()){ lastElement = coada.front(); finishPoint = lastElement.value; coada.pop(); actualI = lastElement.i; actualJ = lastElement.j; if(actualJ+1<m) if(v[actualI][actualJ+1]==0){ newElement.i = actualI; newElement.j = actualJ+1; newElement.value = finishPoint+1; v[actualI][actualJ+1] = finishPoint+1; coada.push(newElement); } if(actualI+1<n) if(v[actualI+1][actualJ]==0){ newElement.i = actualI+1; newElement.j = actualJ; newElement.value = finishPoint+1; v[actualI+1][actualJ] = finishPoint+1; coada.push(newElement); } } return finishPoint; } int main() { scanf("%d%d\n", &n, &m); citire(); cout << solution(); return 0; }