#include <bits/stdc++.h>
using namespace std;
int X[1000][1000], dist[1000][1000], W, H, gx, gy;
char c;
int main() {
  while (true) {
    for (int i = 0; i < 1000; i++) {
      for (int j = 0; j < 1000; j++) {
        X[i][j] = 1000000000;
        dist[i][j] = 1000000000;
      }
    }
    cin >> W >> H;
    queue<pair<int, int>> Q;
    for (int i = 1; i <= H; i++) {
      for (int j = 1; j <= W; j++) {
        cin >> c;
        if (c == '&') {
          gx = i;
          gy = j;
        }
        if (c == '#') {
          X[i][j] = 1;
        } else {
          X[i][j] = 0;
        }
        if (i == 1 || i == H || j == 1 || j == W) {
          Q.push(make_pair(i, j));
          dist[i][j] = X[i][j];
        }
      }
    }
    while (!Q.empty()) {
      pair<int, int> pa = Q.front();
      Q.pop();
      int cx = pa.first, cy = pa.second;
      int dx[4] = {1, 0, -1, 0};
      int dy[4] = {0, 1, 0, -1};
      for (int i = 0; i < 4; i++) {
        int ex = cx + dx[i], ey = cy + dy[i];
        int dis = dist[cx][cy];
        if (X[cx][cy] == 0 && X[ex][ey] == 1) {
          dis += 1;
        }
        if (dist[ex][ey] > dis) {
          dist[ex][ey] = dis;
          Q.push(make_pair(ex, ey));
        }
      }
    }
    cout << dist[gx][gy] << endl;
  }
  return 0;
}
