#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;

}