#include using namespace std; #define rep(i,n) for(int i = 0; i < (n);i++) #define sz(x) int(x.size()) typedef long long ll; typedef pair P; const int INF = 1e9; int dy[] = {1,0,-1,0}; int dx[] = {0,1,0,-1}; int main(){ int h, w; cin >> w >> h; vector> g(h,vector(w)); int sy, sx; rep(i,h) rep(j,w) { cin >> g[i][j]; if (g[i][j] == '.') sy = i, sx = j; } vector> dist(h,vector(w,INF)); int res = INF; deque

deq; deq.push_front({sy,sx}); dist[sy][sx] = 0; while (!deq.empty()) { P p = deq.front(); deq.pop_front(); rep(i,4) { int ny = p.first + dy[i]; int nx = p.second + dx[i]; if (ny < 0 || nx < 0 || nx >= w-1 || ny >= h-1) continue; if (dist[ny][nx] != INF) continue; if (g[ny][nx] == '.') { if (g[p.first][p.second] == '#') res = min(res,dist[p.first][p.second]); dist[ny][nx] = 0; deq.push_front({ny,nx}); } else { dist[ny][nx] = dist[p.first][p.second] + 1; deq.push_back({ny,nx}); } } } cout << res << endl; return 0; }