#include<bits/stdc++.h>
#define Y first
#define X second
usingnamespacestd;usingpii=pair<int,int>;constintW=6,H=12;constintdy[]={-1,1,0,0};constintdx[]={0,0,-1,1};boolchk,vis[H][W];stringboard[H];voidexplode(inty,intx){queue<pii>q;vector<pii>tmp;q.push({y,x});tmp.push_back({y,x});vis[y][x]=true;while(!q.empty()){piicur=q.front();q.pop();for(intdir=0;dir<4;dir++){intny=cur.Y+dy[dir];intnx=cur.X+dx[dir];if(ny<0||nx<0||ny>=H||nx>=W)continue;if(vis[ny][nx]||board[ny][nx]!=board[cur.Y][cur.X])continue;q.push({ny,nx});tmp.push_back({ny,nx});vis[ny][nx]=true;}}if(tmp.size()>=4){chk=true;for(piipos:tmp)board[pos.Y][pos.X]='.';}}voiddrop(){for(inti=0;i<W;i++){for(intj=H-2;j>=0;j--){inttmp=j;while(tmp+1<H&&board[tmp+1][i]=='.'){swap(board[tmp][i],board[tmp+1][i]);tmp++;}}}}intmain(void){ios::sync_with_stdio(0);cin.tie(0);for(inti=0;i<H;i++)cin>>board[i];intans=0;do{fill_n(&vis[0][0],H*W,false);chk=false;drop();for(inti=0;i<H;i++)for(intj=0;j<W;j++)if(!vis[i][j]&&board[i][j]!='.')explode(i,j);if(chk)ans++;}while(chk);cout<<ans;return0;}