#include <algorithm> #include <iostream> #include <fstream> #define pb push_back #define mp make_pair #define ld long double #define ll long long #define ull unsigned long long using namespace std; #define f cin #define g cout #define Block -1 //ifstream f("gigel.in"); //ofstream g("gigel.out"); int N,M,a[110][110],b[110][110],sol; void Fill(int i,int j) { sol=max(sol,a[i][j]); if(j<N && a[i][j+1]<a[i][j]+1 && a[i][j+1]!=Block) { a[i][j+1]=a[i][j]+1; Fill(i,j+1); } if(i<M && a[i+1][j]<a[i][j]+1 && a[i+1][j]!=Block) { a[i+1][j]=a[i][j]+1; Fill(i+1,j); } } int main() { f>>M>>N; for(int i=1;i<=M;++i) for(int j=1;j<=N;++j) { char c; f>>c; if(c=='&')a[i][j]=Block; } for(int i=1;i<=M;++i) for(int j=1;j<=N;++j) //if(a[i][j]) { a[i][j]=1; Fill(i,j); } //for(int i=1;i<=M;++i,g<<'\n') ///for(int j=1;j<=N;++j)g<<a[i][j]<<' '; g<<sol<<'\n'; //f.close();g.close(); return 0; }