#include <stdio.h>
#include <string.h>

FILE *f;
char s[10005];
int len;
int beg[10005],st[10005], test[10005], sthead;
char pld[10005];
int min, max,where, tek, got, j;

void done()
{
	int i, k;
	int l, klv;
	int t[10], nuzh[10];
for(k=0; k<len; k++)
{
	if(s[k]=='a') {test[k]=1; continue;}
	klv = s[k]-'0';
	l = k-1;
	for(i=klv-1; i>=0; i--)
	{
		t[i]=l;
		l=beg[l]-1;
	}
	for(i=0; i<klv; i++)
		nuzh[i] = test[t[i]];
	//na4inaetsja cikl
	min=10005;
	for(i=0; i<klv; i++) //adress na4ala
	{
		max=0;
		for(got=0; got<klv; got++)
		{
			if(max<got+nuzh[(i+got)%klv]) max = got+nuzh[(i+got)%klv];
		}
		if(min>max) {min=max; where=i;}
	}
	//rezul'tat est',  nado perestanovku
	l=0;
	for(i=0; i<klv; i++)
	{
		j = t[(where+i)%klv];
		memcpy(&pld[l], &s[beg[j]], j-beg[j]+1);
		l+=(j-beg[j]+1);
	}
	memcpy(&s[beg[t[0]]], pld, l);
//	fprintf(f,"%d->%d\n", k, min);
//	fprintf(f,"%s\n", pld);
//	for(i=0; i<klv; i++) fprintf(f, "%d ", t[i]);
//	fprintf(f, "\n");
//	for(i=0; i<klv; i++) fprintf(f, "%d ", nuzh[i]);
//	fprintf(f, "\n");

	//return min;
	test[k]=min;
}}

int main()
{
	int i;
	f = fopen("chandelier.in","rt");
	fscanf(f, "%s", s);
	fclose(f);

	len = strlen(s);
	
	sthead=1;
	st[0]=0;
	for(i=0; i<len; i++)
	{
		if(s[i]=='a') beg[i]=i;
		else
		{
			sthead -= (s[i]-'0');
			beg[i]=st[sthead];
		}
		st[sthead++]=beg[i];
	}

	f = fopen("chandelier.out","wt");
//	for(i=0; i<len; i++) fprintf(f, "%d ", beg[i]);
//	fprintf(f, "\n");
//	int rez = test(len-1);
	done();

	fprintf(f, "%d\n", test[len-1]);
	fprintf(f, "%s", s);
	fclose(f);

	return 0;
}