#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; //ライブラリを貼るところ //ここまで const vector dx = {1, 0, -1, 0}; const vector dy = {0, 1, 0, -1}; void solve(){ int H, W; cin >> H >> W; vector G(H); for(int i = 0; i < H; ++i) cin >> G[i]; vector> re(H, vector(W, 0)); for(int i = 0; i < H; ++i) for(int j = 0; j < W; ++j){ if(re[i][j] == 1) continue; char c = G[i][j]; queue> q; q.push(make_pair(i, j)); re[i][j] = 1; vector> v; v.emplace_back(make_pair(i, j)); while(!q.empty()){ auto [x, y] = q.front(); q.pop(); for(int k = 0; k < 4; ++k){ if(x + dx[k] >= 0 && x + dx[k] < H && y + dy[k] >= 0 && y + dy[k] < W){ if(G[x + dx[k]][y + dy[k]] == c && re[x + dx[k]][y + dy[k]] == 0){ re[x + dx[k]][y + dy[k]] = 1; q.push(make_pair(x + dx[k], y + dy[k])); v.emplace_back(make_pair(x + dx[k], y + dy[k])); } } } } if(v.size() >= 4){ for(auto [x, y]: v) G[x][y] = '.'; } } for(int i = 0; i < H; ++i) cout << G[i] << "\n"; } int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); cout << setprecision(16) << fixed; int T = 1; for(int i = 0; i < T; ++i) solve(); }