#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
char c[12][6];
int ck=0,ar[12][6];
void dfs(int i, int j,char cc) {
if (i < 0 || i>11 || j < 0 || j>5) {
return;
}
else if(c[i][j]==cc&&ar[i][j]==0){
ar[i][j] = 1;
ck++;
dfs(i + 1, j, cc);
dfs(i - 1, j, cc);
dfs(i, j + 1, cc);
dfs(i, j - 1, cc);
}
}
void bomb() {
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 6; j++) {
if (ar[i][j] == 1) {
c[i][j] = '.';
ar[i][j] = 0;
}
}
}
}
void gravity() {
for (int i = 11; i > 0; i--) {
for (int j = 5; j > 0; j--) {
if (c[i][j] == '.'&&c[i - 1][j] != '.') {
c[i][j] = c[i - 1][j];
c[i - 1][j] = '.';
i = 11;
j = 5;
}
}
}
}
int main()
{
int ans = 0,solve=0,check=0;
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 6; j++) {
cin >> c[i][j];
ar[i][j] = 0;
}
}
while (1) { //한번이라도 터지면 뿌요들을 내리고 처음부터 다시 찾아보게 했습니다
for (int i = 0; i < 12; i++) { //맨위 왼쪽부터 차례로 찾습니다
for (int j = 0; j < 6; j++) {
ck = 0;
if (c[i][j] != '.') {
dfs(i, j, c[i][j]);
if (ck >= 4) {//dfs결과 4개 이상의 같은것이 나오면 터트립니다
check++;//터지는게 하나라도 있나 체크합니다(while탈출 정함)
bomb();//방문한 뿌요들을 터트려 '.'로 바꿉니다
}
}
for (int i = 0; i < 12; i++) {
for (int j = 0; j < 6; j++)
ar[i][j] = 0;//방문체크를 다시 0으로 만듭니다
}
}
}
gravity(); //터트린곳 내립니다
if (check > 0) {
ans++;//한번에 터진것은 연쇄 하나로 칩니다
check = 0;
}
else
break;
}
cout << ans;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjaGFyIGNbMTJdWzZdOwppbnQgY2s9MCxhclsxMl1bNl07CnZvaWQgZGZzKGludCBpLCBpbnQgaixjaGFyIGNjKSB7CglpZiAoaSA8IDAgfHwgaT4xMSB8fCBqIDwgMCB8fCBqPjUpIHsKCQlyZXR1cm47Cgl9CgllbHNlIGlmKGNbaV1bal09PWNjJiZhcltpXVtqXT09MCl7CgkJYXJbaV1bal0gPSAxOwoJCWNrKys7CgkJZGZzKGkgKyAxLCBqLCBjYyk7CgkJZGZzKGkgLSAxLCBqLCBjYyk7CgkJZGZzKGksIGogKyAxLCBjYyk7CgkJZGZzKGksIGogLSAxLCBjYyk7Cgl9Cn0Kdm9pZCBib21iKCkgewoJZm9yIChpbnQgaSA9IDA7IGkgPCAxMjsgaSsrKSB7CgkJZm9yIChpbnQgaiA9IDA7IGogPCA2OyBqKyspIHsKCQkJaWYgKGFyW2ldW2pdID09IDEpIHsKCQkJCWNbaV1bal0gPSAnLic7CgkJCQlhcltpXVtqXSA9IDA7CgkJCX0KCQl9Cgl9Cn0Kdm9pZCBncmF2aXR5KCkgewoJZm9yIChpbnQgaSA9IDExOyBpID4gMDsgaS0tKSB7CgkJZm9yIChpbnQgaiA9IDU7IGogPiAwOyBqLS0pIHsKCQkJaWYgKGNbaV1bal0gPT0gJy4nJiZjW2kgLSAxXVtqXSAhPSAnLicpIHsKCQkJCWNbaV1bal0gPSBjW2kgLSAxXVtqXTsKCQkJCWNbaSAtIDFdW2pdID0gJy4nOwoJCQkJaSA9IDExOwoJCQkJaiA9IDU7CgkJCX0KCQl9Cgl9Cn0KaW50IG1haW4oKQp7CglpbnQgYW5zID0gMCxzb2x2ZT0wLGNoZWNrPTA7Cglmb3IgKGludCBpID0gMDsgaSA8IDEyOyBpKyspIHsKCQlmb3IgKGludCBqID0gMDsgaiA8IDY7IGorKykgewoJCQljaW4gPj4gY1tpXVtqXTsKCQkJYXJbaV1bal0gPSAwOwoJCX0KCX0KCXdoaWxlICgxKSB7IC8v7ZWc67KI7J20652864+EIO2EsOyngOuptCDrv4zsmpTrk6TsnYQg64K066as6rOgIOyymOydjOu2gO2EsCDri6Tsi5wg7LC+7JWE67O06rKMIO2WiOyKteuLiOuLpAoJCWZvciAoaW50IGkgPSAwOyBpIDwgMTI7IGkrKykgeyAvL+unqOychCDsmbzsqr3rtoDthLAg7LCo66GA66GcIOywvuyKteuLiOuLpAoJCQlmb3IgKGludCBqID0gMDsgaiA8IDY7IGorKykgewoJCQkJY2sgPSAwOwoJCQkJaWYgKGNbaV1bal0gIT0gJy4nKSB7CgkJCQkJZGZzKGksIGosIGNbaV1bal0pOwoJCQkJCWlmIChjayA+PSA0KSB7Ly9kZnPqsrDqs7wgNOqwnCDsnbTsg4HsnZgg6rCZ7J2A6rKD7J20IOuCmOyYpOuptCDthLDtirjrpr3ri4jri6QKCQkJCQkJY2hlY2srKzsvL+2EsOyngOuKlOqyjCDtlZjrgpjrnbzrj4Qg7J6I64KYIOyytO2BrO2VqeuLiOuLpCh3aGlsZe2DiOy2nCDsoJXtlagpCgkJCQkJCWJvbWIoKTsvL+uwqeusuO2VnCDrv4zsmpTrk6TsnYQg7YSw7Yq466CkICcuJ+uhnCDrsJTqv4nri4jri6QKCQkJCQl9CgkJCQl9CgkJCQlmb3IgKGludCBpID0gMDsgaSA8IDEyOyBpKyspIHsKCQkJCQlmb3IgKGludCBqID0gMDsgaiA8IDY7IGorKykKCQkJCQkJYXJbaV1bal0gPSAwOy8v67Cp66y47LK07YGs66W8IOuLpOyLnCAw7Jy866GcIOunjOuTreuLiOuLpAoJCQkJfQoJCQl9CgkJfQoJCWdyYXZpdHkoKTsgLy/thLDtirjrprDqs7Mg64K066a964uI64ukCgkJaWYgKGNoZWNrID4gMCkgewoJCQlhbnMrKzsvL+2VnOuyiOyXkCDthLDsp4TqsoPsnYAg7Jew7IeEIO2VmOuCmOuhnCDsuanri4jri6QKCQkJY2hlY2sgPSAwOwoJCX0KCQllbHNlCgkJCWJyZWFrOwoJfQoJY291dCA8PCBhbnM7CgkKCXJldHVybiAwOwp9