#include int n, m; int dist[105][105]; char s[105][105]; inline int max (int a, int b) {return a > b ? a : b;} void dfs (int x, int y) { if (s[x][y] != '.') return; dist[x + 1][y] = dist[x][y + 1] = dist[x][y] + 1; dfs (x + 1, y); dfs (x, y + 1); } int main () { // freopen ("run.in", "r", stdin); // freopen ("run.out", "w", stdout); scanf ("%d %d\n", &n, &m); int i, j; for (i = 1; i <= n; i ++) gets (s[i] + 1); dist[1][1] = 1; dfs (1, 1); int sol = 0; for (i = 1; i <= n; i ++) for (j = 1; j <= m; j ++) if (s[i][j] == '.' && dist[i][j] > sol) sol = dist[i][j]; printf ("%d\n", sol); return 0; }