#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,a,n) for(int i=(a); i<(int)(n); i++) #define rep(i,n) REP(i,0,n) #define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it) #define ALLOF(c) (c).begin(), (c).end() typedef long long ll; int N, M; string field[55]; #define MAX_V 2505 int V; vector G[MAX_V]; int match[MAX_V]; bool used[MAX_V]; void init_graph(){ for(int i=0; i, int> b_memo, w_memo; init_graph(); cin >> N >> M; rep(i,N){ cin >> field[i]; rep(j,M){ if(field[i][j] == 'b'){ b_memo[make_pair(i,j)] = b_cnt++; } if(field[i][j] == 'w'){ w_memo[make_pair(i,j)] = w_cnt++; } } } V = b_cnt + w_cnt; rep(i,N){ rep(j,M){ if(field[i][j] == 'b'){ rep(k,4){ int nx = j + vx[k]; int ny = i + vy[k]; if(0<=nx && nx