#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
#include <utility>
#include <vector>
using namespace std;
#define mp make_pair
typedef pair<int, int> P;
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};

int N, M;
char maze[110][110];
unsigned int minp[110][110];

int main() {
	for(;;) {
		memset(minp, -1, sizeof minp);
		scanf(" %d %d", &N, &M);
		if(!N && !M) break;
		for(int i = 0; i < M; i++) {
			scanf(" %s", maze[i]);
		}

		// P = (x, y)
		// maze[y][x]
		queue<P> que;
		{
			P put;
			for(int x = 0; x < N; x++) {
				for(int y = 0; y < M; y++) {
					if(maze[y][x] == '&') {
						put.first = x;
						put.second = y;
						minp[y][x] = 0;
						maze[y][x] = '.';
					}
				}
			}
			que.push(put);
		}
		;
		while(!que.empty()) {
			P p = que.front();
			que.pop();

			// push
			for(int i = 0; i < 4; i++) {
				int nx = p.first + dx[i];
				int ny = p.second + dy[i];
				if(0 <= nx && nx < N && 0 <= ny && ny < M && maze[p.second][p.first] == '.' && maze[ny][nx] == '.' && minp[ny][nx] > minp[p.second][p.first]) {
					minp[ny][nx] = minp[p.second][p.first];
					que.push(mp(nx, ny));
				}

				if(0 <= nx && nx < N && 0 <= ny && ny < M && maze[p.second][p.first] == '#' && maze[ny][nx] == '#' && minp[ny][nx] > minp[p.second][p.first]) {
					minp[ny][nx] = minp[p.second][p.first];
					que.push(mp(nx, ny));
				}

				if(0 <= nx && nx < N && 0 <= ny && ny < M && maze[p.second][p.first] == '.' && maze[ny][nx] == '#' && minp[ny][nx] > minp[p.second][p.first]) {
					minp[ny][nx] = minp[p.second][p.first] + 1;
					que.push(mp(nx, ny));
				}

				if(0 <= nx && nx < N && 0 <= ny && ny < M && maze[p.second][p.first] == '#' && maze[ny][nx] == '.' && minp[ny][nx] > minp[p.second][p.first]) {
					minp[ny][nx] = minp[p.second][p.first];
					que.push(mp(nx, ny));
				}
			}
		}
		unsigned int minv = 100000000;
		for(int i = 0; i < N; i++) {
			minv = min(minv, min(minp[0][i], minp[M - 1][i]));
		}
		for(int i = 0; i < M; i++) {
			minv = min(minv, min(minp[i][0], minp[N - 1][i]));
		}
		printf("%d\n", minv);
	}
	return 0;
}