#include #include //run using namespace std; int a[102][102]; int main() { int n, m, i, j; char c; fscanf(stdin,"%d %d", &n, &m); for (i = 0; i < n; ++i) { fscanf(stdin,"\n%c", &c); if (c == '.') a[i][0] = 0; else a[i][0] = -1; for (j = 1; j < m; ++j) { fscanf(stdin,"%c", &c); if (c == '.') a[i][j] = 0; else a[i][j] = -1; } a[i][j] = -1; } for (j = 0; j <= m; ++j) a[i][j] = -1; a[0][0] = 1; queue b; queue d; b.push(0); d.push(0); int maxim = 1; while (!b.empty()) { i = b.front(); j = d.front(); b.pop(); d.pop(); if (a[i+1][j] == 0) { a[i+1][j] = a[i][j] + 1; b.push(i+1); d.push(j); if (maxim < a[i+1][j]) maxim = a[i+1][j]; } if (a[i][j+1] == 0) { a[i][j+1] = a[i][j] + 1; b.push(i); d.push(j+1); if (maxim < a[i+1][j]) maxim = a[i+1][j]; } } fprintf(stdout, "%d", maxim); return 0; }