#include using namespace std; int dy[]={0, 0, 1, -1}; int dx[]={1, -1, 0, 0}; int W,H; string s[30]; int A[30][30]; void dfs(int y, int x, int n){ if(y<0 || y>=H || x<0 || x>=W) return; if(s[y][x]=='#' || A[y][x]!=-1) return; A[y][x]=n; for(int i=0;i<4;i++) dfs(y+dy[i],x+dx[i],n); } int B[30][30]; int bfs(){ memset(B,-1,sizeof(B)); queue > Q; for(int y=0;y ps=Q.front(); Q.pop(); int y=ps.first; int x=ps.second; int z=B[y][x]; for(int i=0;i<4;i++){ int ny=y+dy[i]; int nx=x+dx[i]; if(ny<0 || ny>=H || nx<0 || nx>=W) continue; if(B[ny][nx]!=-1) continue; B[ny][nx]=z+1; Q.push(make_pair(ny,nx)); } } int res=1<<25; for(int y=0;y> W >> H; for(int i=0;i> s[i]; int n=0; for(int y=0;y