char m[7*14],v[7*14];
C(i,c){
	if(m[i]==c&&!v[i]){
		v[i]=1;
		return 1+C(i+1,c)+C(i-1,c)+C(i+7,c)+C(i-7,c);
	}
	return 0;
}
E(i,c){
	if(m[i]=='O')
		m[i]='.';
	else if(m[i]==c){
		m[i]='.';
		E(i+1,c),E(i-1,c),E(i+7,c),E(i-7,c);
	}
}
main(){
	int N,i,j,e,n;
	scanf("%d",&N);
	if(N>9)
		exit(1);
	for(;N--;){
		for(i=0;i<7*12;i++)
			m[7+i]=getchar();
		for(n=0;;n++){
			e=0;
			memset(v,0,sizeof(v));
			for(i=0;i<7*12;i++){
				if(strchr("RGBYP",m[7+i])&&C(7+i,m[7+i])>=4){
					e=1;
					E(7+i,m[7+i]);
				}
			}
			if(!e)
				break;
			for(i=0;i<11;i++){
				for(j=7*12;j--;){
					if(m[7+j]=='.'){
						m[7+j]=m[j];
						m[j]='.';
					}
				}
			}
		}
		printf("%d\n",n);
	}
	exit(0);
}