#include #define Nmax 101 struct queue { int l,c; } q[Nmax], ps, p, v; int n, m, fst, lst, mxv; char c[Nmax][Nmax]; int msk[Nmax][Nmax]; int dl[] = {0,1}; int dc[] = {1,0}; //void show_matrix () { // // for (int i = 1 ; i <= n ; i ++) { // for (int j = 1 ; j <= m ; j ++) // printf("%c ", c[i][j]); // printf("\n"); // } //// printf ("%c", c[1][1]); // //} int lee () { q[0].l = 1; q[0].c = 1; c[1][1] = '1'; while (fst <= lst) { p = q[fst]; fst++; for (int k = 0; k < 2 ; k ++) { v.l = p.l + dl[k]; v.c = p.c + dc[k]; if (c[v.l][v.c] == '.') { mxv = c[p.l][p.c] + 1; c[v.l][v.c] = mxv; //TODO +1 lst ++; q[lst] = v; } } } return mxv; } int main() { // freopen("run.in", "r", stdin); // freopen("run.out", "w", stdout); scanf("%d %d", &n, &m); for (int i = 1 ; i <= n ; i ++) for (int j = 1 ; j <= m ; j ++) scanf(" %c", &c[i][j]); printf("%d", lee() - '0'); return 0; }