#include <cstdio>
#include <iostream>
#include <string>
#include <sstream>
#include <cstring>
#include <stack>
#include <queue>
#include <algorithm>
#include <cmath>
#include <map>
using namespace std;
//#define LOCAL
struct Node
{
int cnt;
string str;
};
int main()
{
#ifdef LOCAL
freopen("in.txt", "r", stdin);
#endif // LOCAL
//Start
char a[1200];
memset(a,0,sizeof a);
Node tmp;
while(cin>>a)
{
queue<Node>q;
while(!q.empty())q.pop();
tmp.cnt=1,tmp.str.clear();
tmp.str.push_back(a[0]);
for(int i=1,len=strlen(a); i<len; i++)
{
if(tmp.str.size()==1)
{
if(*(--tmp.str.end())==a[i])
{
tmp.cnt++;
if(i==len-1)q.push(tmp);
}
else
{
if(tmp.cnt==1)
{
tmp.str.push_back(a[i]);
tmp.cnt++;
}
else
{
q.push(tmp);
tmp.cnt=1;
tmp.str.clear();
tmp.str.push_back(a[i]);
}
if(i==len-1)q.push(tmp);
}
}
else
{
if(*(--tmp.str.end())==a[i])
{
tmp.str.erase(--tmp.str.end()),tmp.cnt--;
//tmp.str.push_back(‘1‘);
q.push(tmp);
tmp.cnt=2;
tmp.str.clear();
tmp.str.push_back(a[i]);
if(i==len-1)q.push(tmp);
}
else
{
tmp.str.push_back(a[i]),tmp.cnt++;
if(i==len-1)q.push(tmp);
}
}
}
while(!q.empty())
{
tmp=q.front();
q.pop();
if(tmp.str.size()==1&&tmp.cnt!=1)printf("%d%c",tmp.cnt,tmp.str[0]);
else
{
cout<<"1";
string::iterator it=tmp.str.begin();
for(;it!=tmp.str.end();it++)
{
if(*it==‘1‘)cout<<"11";
else cout<<*it;
}
cout<<"1";
}
}
printf("\n");
}
return 0;
}