#include <iostream>
#include <algorithm>
#include <vector>
#include <cassert>
#include <queue>
typedef std::vector<char> column;
typedef std::vector<column> gamefield;
typedef std::pair<int, int> index;
std::istream& operator>>(std::istream& in, gamefield &gf)
{
std::vector<std::string> lines;
for (std::string s; std::getline(in, s); assert(s.size() == lines.front().size()))
lines.push_back(s);
if (lines.empty())
in.setstate(std::ios::failbit);
gf.resize(2+lines.front().size(), std::vector<char>(1, '\0'));
gf.front() = gf.back() = std::vector<char>(2+lines.size(), '\0');
for (int y=lines.size()-1; y>=0; --y)
for (int x=0; x<lines.front().size(); ++x)
gf[1+x].push_back(lines[y][x]);
return in;
}
std::ostream& operator<<(std::ostream& out, gamefield const& gf)
{
assert(!gf.empty());
for (int x=gf.front().size()-2; x>0; --x, out << '\n')
for (int y=1; y<gf.size()-1; ++y)
out << (gf[y][x] ? gf[y][x] : '-');
return out;
}
void pop(gamefield& gf, index idx)
{
char color_to_remove = gf[idx.first][idx.second];
std::queue<index> q;
q.push(idx);
while (!q.empty()) {
int y = q.front().first;
int x = q.front().second;
q.pop();
gf[y][x] = '\0';
#undef check
#define check(dy, dx) /* ein macro ist hier einfachsten */ \
if (gf[y+dy][x+dx] == color_to_remove) q.push(std::make_pair(y+dy, x+dx))
check(+1, -1); check(+1, 0); check(+1, +1);
check( 0, -1); check( 0, +1);
check(-1, -1); check(-1, 0); check(-1, +1);
#undef check
}
for (int i=1; i<gf.size()-1; ++i)
std::fill(std::remove(gf[i].begin()+1, gf[i].end(), '\0'), gf[i].end(), '\0');
}
int main()
{
gamefield gf;
std::cin >> gf;
std::cout << gf << '\n';
pop(gf, std::make_pair(1, 1));
std::cout << gf << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y2Fzc2VydD4KI2luY2x1ZGUgPHF1ZXVlPgoKdHlwZWRlZiBzdGQ6OnZlY3RvcjxjaGFyPiBjb2x1bW47CnR5cGVkZWYgc3RkOjp2ZWN0b3I8Y29sdW1uPiBnYW1lZmllbGQ7CnR5cGVkZWYgc3RkOjpwYWlyPGludCwgaW50PiBpbmRleDsKCnN0ZDo6aXN0cmVhbSYgb3BlcmF0b3I+PihzdGQ6OmlzdHJlYW0mIGluLCBnYW1lZmllbGQgJmdmKQp7CiAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IGxpbmVzOwogIGZvciAoc3RkOjpzdHJpbmcgczsgc3RkOjpnZXRsaW5lKGluLCBzKTsgYXNzZXJ0KHMuc2l6ZSgpID09IGxpbmVzLmZyb250KCkuc2l6ZSgpKSkKICAgIGxpbmVzLnB1c2hfYmFjayhzKTsKCiAgaWYgKGxpbmVzLmVtcHR5KCkpCiAgICBpbi5zZXRzdGF0ZShzdGQ6Omlvczo6ZmFpbGJpdCk7CiAgZ2YucmVzaXplKDIrbGluZXMuZnJvbnQoKS5zaXplKCksIHN0ZDo6dmVjdG9yPGNoYXI+KDEsICdcMCcpKTsKICBnZi5mcm9udCgpID0gZ2YuYmFjaygpID0gc3RkOjp2ZWN0b3I8Y2hhcj4oMitsaW5lcy5zaXplKCksICdcMCcpOwoKICBmb3IgKGludCB5PWxpbmVzLnNpemUoKS0xOyB5Pj0wOyAtLXkpCiAgICBmb3IgKGludCB4PTA7IHg8bGluZXMuZnJvbnQoKS5zaXplKCk7ICsreCkKICAgICAgZ2ZbMSt4XS5wdXNoX2JhY2sobGluZXNbeV1beF0pOwoKICByZXR1cm4gaW47Cn0KCnN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIG91dCwgZ2FtZWZpZWxkIGNvbnN0JiBnZikKewogIGFzc2VydCghZ2YuZW1wdHkoKSk7CiAgZm9yIChpbnQgeD1nZi5mcm9udCgpLnNpemUoKS0yOyB4PjA7IC0teCwgb3V0IDw8ICdcbicpCiAgICBmb3IgKGludCB5PTE7IHk8Z2Yuc2l6ZSgpLTE7ICsreSkKICAgICAgb3V0IDw8IChnZlt5XVt4XSA/IGdmW3ldW3hdIDogJy0nKTsKICByZXR1cm4gb3V0Owp9Cgp2b2lkIHBvcChnYW1lZmllbGQmIGdmLCBpbmRleCBpZHgpCnsKICBjaGFyIGNvbG9yX3RvX3JlbW92ZSA9IGdmW2lkeC5maXJzdF1baWR4LnNlY29uZF07CiAgc3RkOjpxdWV1ZTxpbmRleD4gcTsKICBxLnB1c2goaWR4KTsKICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgaW50IHkgPSBxLmZyb250KCkuZmlyc3Q7CiAgICBpbnQgeCA9IHEuZnJvbnQoKS5zZWNvbmQ7CiAgICBxLnBvcCgpOwoKICAgIGdmW3ldW3hdID0gJ1wwJzsKI3VuZGVmIGNoZWNrCiNkZWZpbmUgY2hlY2soZHksIGR4KSAvKiBlaW4gbWFjcm8gaXN0IGhpZXIgZWluZmFjaHN0ZW4gKi8gICAgICAgICAgICAgIFwKICAgIGlmIChnZlt5K2R5XVt4K2R4XSA9PSBjb2xvcl90b19yZW1vdmUpIHEucHVzaChzdGQ6Om1ha2VfcGFpcih5K2R5LCB4K2R4KSkKICAgIAogICAgY2hlY2soKzEsIC0xKTsgY2hlY2soKzEsIDApOyBjaGVjaygrMSwgKzEpOwogICAgY2hlY2soIDAsIC0xKTsgICAgICAgICAgICAgICBjaGVjayggMCwgKzEpOwogICAgY2hlY2soLTEsIC0xKTsgY2hlY2soLTEsIDApOyBjaGVjaygtMSwgKzEpOwojdW5kZWYgY2hlY2sKICB9CgogIGZvciAoaW50IGk9MTsgaTxnZi5zaXplKCktMTsgKytpKQogICAgc3RkOjpmaWxsKHN0ZDo6cmVtb3ZlKGdmW2ldLmJlZ2luKCkrMSwgZ2ZbaV0uZW5kKCksICdcMCcpLCBnZltpXS5lbmQoKSwgJ1wwJyk7Cn0KCmludCBtYWluKCkKewogIGdhbWVmaWVsZCBnZjsKICBzdGQ6OmNpbiA+PiBnZjsKICBzdGQ6OmNvdXQgPDwgZ2YgPDwgJ1xuJzsKCiAgcG9wKGdmLCBzdGQ6Om1ha2VfcGFpcigxLCAxKSk7CgogIHN0ZDo6Y291dCA8PCBnZiA8PCAnXG4nOwp9Cg==