#include <iostream> #include <vector> #include <queue> #include <stdio.h> #define per pair<int,int> #define x first #define y second using namespace std; vector<string> v; queue<per> q; int n,m; int dist[105][105]; int dx[]={1,0}; int dy[]={0,1}; int max() {int maxx=0; for (int i=0;i<n;++i) for (int j=0;j<m;++j) if (dist[i][j]>maxx) maxx=dist[i][j]; return maxx; } void fill() { for (int i=0;i<n;++i) for (int j=0;j<m;++j) if (v[i][j]=='&') dist[i][j]=-1; } bool inside(int i,int j) { return (i>=0 && j>=0 && i<n && j<m); } void pil() { int ii,jj; q.push(make_pair(0,0)); dist[0][0]=1; while (!q.empty()){ per fr=q.front(); q.pop(); for (int d=0;d<2;++d){ ii=fr.x+dx[d]; jj=fr.y+dy[d]; if (inside(ii,jj) && dist[ii][jj]==0){ dist[ii][jj]=dist[fr.x][fr.y]+1; q.push(make_pair(ii,jj)); } } } } int main() { //freopen("input.txt","r",stdin); cin>>n>>m; v.resize(n); for (int i=0;i<n;++i) cin>>v[i]; fill(); pil(); cout<<max(); return 0; }