#include <cstdio>
#include <cstring>
#include <cmath>
char s[1000000];
char mat[1005][1005];
int p=0;
using namespace std;
void reconstituire( int x1, int y1, int x2, int y2 )
{
int i, j, k, cr;
if( s[p]=='*' )
{
p++;
if( x2-x1>0 && y2-y1>0 )
{
reconstituire(x1,y1,(x1+x2)/2,(y1+y2)/2);
reconstituire(x1,(y1+y2)/2+1,(x1+x2)/2,y2);
reconstituire((x1+x2)/2+1,y1,x2,(y1+y2)/2);
reconstituire((x1+x2)/2+1,(y1+y2)/2+1,x2,y2);
}
else
if( x2-x1==0 && y2-y1>0 )
{
reconstituire(x1,y1,x2,(y1+y2)/2);
reconstituire(x1,(y1+y2)/2+1,x2,y2);
}
else
if( x2-x1>0 && y2-y1==0 )
{
reconstituire(x1,y1,(x1+x2)/2,y2);
reconstituire((x1+x2)/2+1,y1,x2,y2);
}
}
else
{
while( '0'<=s[p] && s[p]<='9' )
p++;
for( i=x1;i<=x2;i++ )
for( j=y1;j<=y2;j++ )
{
mat[i][j]=s[p];
}
p++;
}
}
int main()
{
freopen( "compresie.in", "r", stdin );
freopen( "compresie.out", "w", stdout );
int i, j, imp=0, n=0, k, st=0, m;
scanf( "%s", s );
m=strlen(s);
for( i=0;i<m;i++ )
{
if( s[i]=='*' )
imp++;
else
if( 'a'<=s[i] && s[i]<='z' )
{
if( st==0 )
n++;
else
st=0;
}
else
{
k=0;
while( '0'<=s[i] && s[i]<='9' )
{
k=k*10+(s[i]-'0');
i++;
}
n+=k;
i--;
st=1;
}
}
printf( "%d\n", imp );
n=sqrt(n);
reconstituire(1,1,n,n);
for( i=1;i<=n;i++ )
{
for( j=1;j<=n;j++ )
printf( "%c", mat[i][j] );
printf( "\n" );
}
return 0;
}