#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char c[10][20];
int data[10][20],idx[10][20],k,score;
struct Node{
int x,y,sum,mscore;
char c;
}move[100];
void print(){
int i,j;
for(i=0;i<10;i++){
for(j=0;j<15;j++)
printf("%3d",data[i][j]);
cout<<endl;
}
cout<<endl;
}
int deep(int i,int j,int id){
int t = data[i][j],s=0;
if(data[i][j]==-1)return 0;
idx[i][j] = id;
if(j<14&&data[i][j+1]==t&&idx[i][j+1]==0){
s += deep(i,j+1,id);
}
if(i>0&&data[i-1][j]==t&&idx[i-1][j]==0){
s += deep(i-1,j,id);
}
if(j>0&&data[i][j-1]==t&&idx[i][j-1]==0){
s += deep(i,j-1,id);
}
if(i<14&&data[i+1][j]==t&&idx[i+1][j]==0){
s += deep(i+1,j,id);
}
return s+1;
}
void del(int i,int j){
int p,q,r,ss;
for(p=0;p<10;p++){
for(q=0;q<15;q++){
if(idx[i][j]==idx[p][q])
data[p][q] = -2;
}
}
for(p=0;p<15;p++){
for(q=9,r=q-1;r>=0;q--,r--){
if(data[q][p]==-2){
while(r>=0&&data[r][p]==-2)r--;
if(r==-1)break;
data[q][p] = data[r][p];
data[r][p] = -2;
}
}
for(q=9;q>=0;q--){
if(data[q][p]==-2){
data[q][p] = -1;
}
}
}
for(p=j,q=j+1;q<15;p++,q++){
if(data[9][p]==-1){
while(q<15&&data[9][q]==-1)q++;
if(q==15)break;
for(r=0;r<10;r++){
data[r][p] = data[r][q];
data[r][q] = -1;
}
}
}
}
int main(){
int t,kase,i,j,count,maxn,maxi,maxj,maxid,tmp,n;
scanf("%d",&t);
for(kase=1;kase<=t;kase++){
for(i=0;i<10;i++){
scanf("%s",c[i]);
for(j=0;j<15;j++)
if(c[i][j]=='R')
data[i][j] = 1;
else if(c[i][j]=='G')
data[i][j] = 2;
else
data[i][j] = 3;
}
score = 0;
n = 0;
do{
memset(idx,0,sizeof(idx));
count = 0;
maxn = -1;
for(j=0;j<15;j++)
for(i=9;i>=0;i--)
if(idx[i][j]==0&&data[i][j]!=-1){
tmp = deep(i,j,++count);
if(maxn<tmp){
maxn = tmp;
maxi = i;
maxj = j;
}
}
if(maxn<2)break;
else{
if(data[maxi][maxj]==1)
move[n].c = 'R';
else if(data[maxi][maxj]==2)
move[n].c = 'G';
else
move[n].c = 'B';
move[n].x = maxi;
move[n].y = maxj;
move[n].mscore = (maxn-2)*(maxn-2);
move[n].sum = maxn;
n++;
}
del(maxi,maxj);
}while(maxn>1);
// for(i=0;i<n;i++){
// cout<<move[i].c<<" "<<move[i].x<<" "<<move[i].y<<" "<<move[i].sum<<endl;
// }
score = 0;
maxn = 0;
for(i=0;i<n;i++){
score += move[i].mscore;
maxn += move[i].sum;
}
if(maxn==150)score+=1000;
printf("Game %d: \n\n",kase);
for(i=0;i<n;i++){
printf("Move %d at (%d,%d): removed %d balls of color %c, got %d points. \n",
i+1,10-move[i].x,move[i].y+1,move[i].sum,move[i].c,move[i].mscore);
}
printf("Final score: %d, with %d balls remaining. \n\n",score,150-maxn);
}
return 0;
}