#include using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define llong long long vector> pool1; vector> pool2; int w, h; void dfs(vector &mapping, int y, int x, bool ispool1) { if(!(0 <= y && y < h && 0 <= x && x < w)) return; if(mapping[y][x] == '#') return; mapping[y][x] = '#'; if(ispool1) pool1.push_back(make_pair(y, x)); else pool2.push_back(make_pair(y, x)); dfs(mapping, y-1, x, ispool1); dfs(mapping, y+1, x, ispool1); dfs(mapping, y, x-1, ispool1); dfs(mapping, y, x+1, ispool1); } int main() { cin >> w >> h; vector mapping(h); rep(i, h) cin >> mapping[i]; rep(i, h) rep(j, w) dfs(mapping, i, j, pool1.empty()); int dist = 20*20; for(pair p1: pool1) { for(pair p2: pool2) { dist = min(dist, abs(p1.first - p2.first) + abs(p1.second - p2.second) - 1); } } cout << dist << "\n"; }