#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<list>
#include<vector>
#include<stack>
#include <algorithm>
#define N 1024
using namespace std;
bool ok(string a,string b)
{
if(a[0]==b[0]||a[1]==b[1])
return 1;
return 0;
}
int main()
{
// freopen("ex.in","r",stdin);
string str;
while(cin>>str&&str[0]!='#')
{
stack<string> sta;
vector<stack<string> > s;//必须有空格!!!
sta.push(str);
s.push_back(sta);
for(int i=1; i<52; i++)
{
cin>>str;
stack<string> sta1;
sta1.push(str);
s.push_back(sta1);
}
//for(int i=0;i<52;i++)
//cout<<i<<" "<<s[i].top()<<endl;
int i;
int len=52;
for(i=0; i<len;)
{
// cout<<"i="<<i<<endl;
if(i>=3&&ok(s[i].top(),s[i-3].top()))
{
s[i-3].push(s[i].top());
s[i].pop();
if(s[i].empty())
{
s.erase(i+s.begin());
--len;
}
i-=3;
}
else if(i>=1&&ok(s[i].top(),s[i-1].top()))
{
// cout<<"i="<<i<<" "<<s[i].top()<<endl;
s[i-1].push(s[i].top());
s[i].pop();
if(s[i].empty())
{
s.erase(i+s.begin());
len--;
}
i-=1;
}
else
i++;
}
cout<<len;
if(len==1)
cout<<" pile remaining:";
else
cout<<" piles remaining:";
for(int i=0; i<len; i++)
cout<<" "<<s[i].size();
cout<<endl;
}
return 0;
}
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<list>
#include<vector>
#include<stack>
#include <algorithm>
#define N 1024
using namespace std;
bool ok(string a,string b)
{
if(a[0]==b[0]||a[1]==b[1])
return 1;
return 0;
}
int main()
{
// freopen("ex.in","r",stdin);
string str;
while(cin>>str&&str[0]!='#')
{
stack<string> sta;
vector<stack<string> > s;//必须有空格!!!
sta.push(str);
s.push_back(sta);
for(int i=1; i<52; i++)
{
cin>>str;
stack<string> sta1;
sta1.push(str);
s.push_back(sta1);
}
//for(int i=0;i<52;i++)
//cout<<i<<" "<<s[i].top()<<endl;
int i;
int len=52;
for(i=0; i<len;)
{
// cout<<"i="<<i<<endl;
if(i>=3&&ok(s[i].top(),s[i-3].top()))
{
s[i-3].push(s[i].top());
s[i].pop();
if(s[i].empty())
{
s.erase(i+s.begin());
--len;
}
i-=3;
}
else if(i>=1&&ok(s[i].top(),s[i-1].top()))
{
// cout<<"i="<<i<<" "<<s[i].top()<<endl;
s[i-1].push(s[i].top());
s[i].pop();
if(s[i].empty())
{
s.erase(i+s.begin());
len--;
}
i-=1;
}
else
i++;
}
cout<<len;
if(len==1)
cout<<" pile remaining:";
else
cout<<" piles remaining:";
for(int i=0; i<len; i++)
cout<<" "<<s[i].size();
cout<<endl;
}
return 0;
}