#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int n, m, smax; char mat[105][105]; class point { public: int y, x, scor; // y = line, x = column point(int x, int y, int scor) { this->x = x; this->y = y; this->scor = scor; } point() { x = 0; y = 0; scor = 1; } }; void dfs(point p) { vector vp; if(p.x + 1 < m && mat[p.y][p.x + 1] != '&') vp.push_back(point(p.x + 1, p.y, p.scor + 1)); if(p.y + 1 < n && mat[p.y + 1][p.x] != '&') vp.push_back(point(p.x, p.y + 1, p.scor + 1)); for(int i = 0; (unsigned) i < vp.size(); i++) { point aux = vp[i]; dfs(aux); smax = max(smax, aux.scor); } } int main() { // freopen("date.in", "r", stdin); // freopen("date.out","w", stdout); cin >> n >> m; for(int i = 0; i < n; i++) { for(int j = 0; j < m; j++) { cin >> mat[i][j]; } } point p = point(); smax = 1; dfs(p); cout << smax; return 0; }