#include <cstdio>

#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;
}