#include <bits/stdc++.h>
using namespace std;
int f(int a[][100], int x, int y, int p, int w, int h) {
  if (0) {
  } else if (a[x][y] == -2) {
    a[x][y] = p + 1;
  } else if (a[x][y] == -1) {
    if (x == 0 || x == w - 1 || y == 0 || y == h - 1) return 1;
    a[x][y] = p;
    if (f(a, x - 1, y, p, w, h)) return 1;
    if (f(a, x, y - 1, p, w, h)) return 1;
    if (f(a, x + 1, y, p, w, h)) return 1;
    if (f(a, x, y + 1, p, w, h)) return 1;
  }
  return 0;
}
int main() {
  int i, j, k;
  int a[100][100], w, h;
  char c;
  while (cin >> w >> h && w + h) {
    for (i = 0; i < h; i++) {
      for (j = 0; j < w; j++) {
        cin >> c;
        if (0) {
        } else if (c == '#') {
          a[j][i] = -2;
        } else if (c == '.') {
          a[j][i] = -1;
        } else if (c == '&') {
          a[j][i] = 0;
        }
      }
    }
    for (i = 0;; i++) {
      for (j = 0; j < h; j++) {
        for (k = 0; k < w; k++) {
          if (a[k][j] == i) {
            if (k == 0 || k == w - 1 || j == 0 || j == h - 1) break;
            if (f(a, k - 1, j, i, w, h)) break;
            if (f(a, k, j - 1, i, w, h)) break;
            if (f(a, k + 1, j, i, w, h)) break;
            if (f(a, k, j + 1, i, w, h)) break;
          }
        }
        if (k != w) break;
      }
      if (j != h) break;
    }
    cout << i << endl;
  }
  return 0;
}
