#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

const char p[7] = {'R','G','B','Y','P','O','.'};
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};
string f[12];
int cnt = 0;

void debug(){
	cout << endl;
	for(int y=0 ; y<12 ; ++y )
		cout << f[y] << endl;
	cout << endl;
}

void downPuyo(int x,int y){
	char t = f[y+1][x] ;
	f[y+1][x] = f[y][x];
	f[y][x] = t;
	
	if( y+1 != 11 && f[y+2][x] == '.' ){
		downPuyo( x , y+1 );
	}
}

void checkPuyo(int x,int y,char color){
	f[y][x] += 'a' - 'A';
	for(int i=0 ; i<4 ; ++i ){
		int mx = x + dx[i];
		int my = y + dy[i];

		if( mx < 0 || my < 0 || mx >= 6 || my >= 12 )
			continue;

		if( f[my][mx] == color ){
			++cnt;
			checkPuyo( mx , my , color );
		}
	}
}
void eracePuyo(int x,int y,char color){
	f[y][x] = '.';
	for(int i=0 ; i<4 ; ++i ){
		int mx = x + dx[i];
		int my = y + dy[i];

		if( mx < 0 || my < 0 || mx >= 6 || my >= 12 )
			continue;

		if( f[my][mx] == color ){
			eracePuyo( mx , my , color );
		}
		if( f[my][mx] == 'O' ){
			f[my][mx] = '.';
		}
	}
}

int main(){
	int n, chain;
	
	cin >> n;
	for(int i=0 ; i<n ; ++i ){
		for(int y=0 ; y<12 ; ++y ){
			cin >> f[y];
		}

		//ú»
		bool flag = true;
		chain = 0;

		//Á¦éÕæªÈ­ÈéÜÅ[v
		while( flag ){
			flag = false;

			/*cout << "Á¦éO" << endl;
			debug();
			cout << endl;*/

			for(int i=0 ; i<5 ; ++i ){
				for(int y=0 ; y<12 ; ++y ){
					for(int x=0 ; x<6 ; ++x ){
						cnt = 0;
						//àµFÕæ¾Á½ç
						if( f[y][x] == p[i] ){
							cnt++;
							checkPuyo( x , y , p[i] );
							//àµSÂÈã­ÁÂ¢Ä¢½ç¯·
							if( cnt >= 4 ){
								flag = true;
								eracePuyo( x , y , p[i] + ('a'-'A') );
							}
						}
					}
				}
			}

			//ú»
			for(int i=0 ; i<5 ; ++i ){
				for(int y=0 ; y<12 ; ++y ){
					for(int x=0 ; x<6 ; ++x ){
						char c = p[i] + ('a'-'A');
						if( f[y][x] == c ){
							f[y][x] -= ('a'-'A');
						}
					}
				}
			}

			/*cout << "Á¦½ã" << endl;
			debug();
			cout << endl;*/

			//Á¦éÕæª éÆ«
			if( flag ){
				chain++;

				for(int i=0 ; i<6 ; ++i ){
					for(int y=10 ; y>=0 ; --y ){
						for(int x=0 ; x<6 ; ++x ){
							if( f[y][x] == p[i] && f[y+1][x] == '.' ){
								downPuyo( x , y );
							}
						}
					}
				}
				for(int i=0 ; i<6 ; ++i ){
					for(int y=10 ; y>=0 ; --y ){
						for(int x=0 ; x<6 ; ++x ){
							if( f[y][x] == p[i] && f[y+1][x] == '.' ){
								downPuyo( x , y );
							}
						}
					}
				}
				for(int i=0 ; i<6 ; ++i ){
					for(int y=10 ; y>=0 ; --y ){
						for(int x=0 ; x<6 ; ++x ){
							if( f[y][x] == p[i] && f[y+1][x] == '.' ){
								downPuyo( x , y );
							}
						}
					}
				}
				for(int i=0 ; i<6 ; ++i ){
					for(int y=10 ; y>=0 ; --y ){
						for(int x=0 ; x<6 ; ++x ){
							if( f[y][x] == p[i] && f[y+1][x] == '.' ){
								downPuyo( x , y );
							}
						}
					}
				}
				/*cout << "ºã" << endl;
				debug();
				cout << endl;*/
			}		
		}
		cout << chain << endl;
	}
}