#include using namespace std; #define NMAX 103 char s[NMAX][NMAX], Void[0]; int n, m, v[NMAX][NMAX], maxim = -1; inline int Maxim (int x, int y) { if (x > y) return x; else return y; } void ReadData () { cin >> n >> m; cin.getline (Void, 0); for (int i = 1; i <= n; ++i) { for (int j = 1; j <= n; ++j) cin >> s[i][j]; cin.getline (Void, 0); } } void Solve () { v[1][1] = 0; int a, b; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { if (s[i][j] == '&') v[i][j] = 0; else { if (i - 1 >= 1 && s[i - 1][j] == '.' && s[i][j] == '.') a = v[i - 1][j]; else a = 0; if (j - 1 >= 1 && s[i][j - 1] == '.' && s[i][j] == '.') b = v[i][j - 1]; else b = 0; v[i][j] = Maxim (a, b) + 1; } if (v[i][j] > maxim) { maxim = v[i][j]; } } } } int main () { ReadData (); Solve (); cout << maxim; return 0; }