#include<iostream>
#include<stdio.h>
#include<math.h>
#include<stack>
#include<list>
#include<stdlib.h>
#include<string.h>
using namespace std;
char da[55][55][5];
int num[55];
int pilenum;
void erase(int idx)
{
for(int i=idx;i<pilenum;i++)
{
memcpy(da[i],da[i+1],sizeof(da[0]));
num[i]=num[i+1];
}
pilenum--;
}
int deal()
{
int isdeal=0;
for(int i=1;i<=pilenum;i++)
{
if(i>3)
{
if(da[i][num[i]][0]==da[i-3][num[i-3]][0]||
da[i][num[i]][1]==da[i-3][num[i-3]][1])
{
num[i-3]++;
strcpy(da[i-3][num[i-3]],da[i][num[i]]);
num[i]--;
if(num[i]==0)erase(i);
return 1;
}
}
if(i>1)
{
if(da[i][num[i]][0]==da[i-1][num[i-1]][0]||
da[i][num[i]][1]==da[i-1][num[i-1]][1])
{
num[i-1]++;
strcpy(da[i-1][num[i-1]],da[i][num[i]]);
num[i]--;
if(num[i]==0)erase(i);
return 1;
}
}
}
return isdeal;
}
int main()
{
while(scanf("%s",da[1][1])!=EOF)
{
if(da[1][1][0]=='#')break;
for(int i=1;i<=52;i++)
num[i]=1;
for(int i=2;i<=52;i++)
scanf("%s",da[i][1]);
pilenum=52;
while(deal());
if(pilenum==1)
{
printf("1 pile remaining: 52\n");
}else
{
printf("%d piles remaining:",pilenum);
for(int i=1;i<=pilenum;i++)
printf(" %d",num[i]);
printf("\n");
}
}
return 0;
}