#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

#include <algorithm>
using namespace std;

int n,m;

char s[10001];

struct RES
{
  int l;
  char *s;
};

int dist(int a,int b,int n)
{
  a=b-a;
  if (a<0) a+=n;
  return a;
}

RES rec(int &k)
{
  RES r;
  if (s[k]=='a')
  {
    k--;
    r.l=1;
    r.s=new char[2];
    strcpy(r.s,"a");
    return r;
  }

  int n=s[k]-'0';
  k--;

  RES z[10];

  int i,suml=0;

  for(i=0; i<n; i++) { z[n-i-1]=rec(k); suml+=strlen(z[n-i-1].s);}

  int bi=-1,j,q,best,cur;
  for(i=0; i<n; i++)
  {
    j=i;
    q=n;
    int bj=-1,curbest;
    while(q--)
    {
      cur=z[j].l-dist(j,i,n)-1;
      if (bj==-1 || curbest < cur) curbest=cur,bj=j;
      j++;
      if (j==n) j=0;
    }

    if (bi==-1 || curbest < best) bi=i, best=curbest;
  }

  q=n;
  i=0;

  j=bi+1; if (j==n) j=0;

  r.l=best+n;
  r.s=new char[suml+2];
  r.s[0]=0;
  while(q--)
  {
    strcat(r.s,z[j].s);
    delete z[j].s;
    j++;
    if (j==n) j=0;
  }

  r.s[suml]=n+'0';
  r.s[suml+1]=0;

  return r;
}

int main()
{
  freopen("chandelier.in","r",stdin);
  freopen("chandelier.out","w",stdout);

  int i,j,k;

  scanf("%s",s);

  n=strlen(s);

  j=n-1;
  RES r=rec(j);

  printf("%d\n%s\n",r.l,r.s);

  return 0;
}