#include<iostream>
int n,m;
int a[10]={0};
int num;
int q=0;
int sum=0;
int b[10]={0};
void jisuan()
{
for(int i=0;i<q-1;i++)
{
if(a[i]==1)
{
sum=sum*10+b[i];
}
if(a[i]==0)
{
}
}
}
void dfs(int step)
{
if(step==(q-1))
{
for(int i=0;i<(q-1);i++)
printf("%d",a[i]);
printf("\n");
jisuan();
return;
}
for(int i=0;i<2;i++)
{
a[step]=i;
dfs(step+1);
}
}
void cunshu(int i)
{
int k=i;
for(int j=0;j<10;j++)
{
b[j]=i%10;
i=i/10;
}
while(k)
{
k=k/10;
q++;
}
}
int main()
{
freopen("input.txt","r",stdin);
scanf("%d%d",&n,&m);
/*if(n==0&&m==0)
break;*/
cunshu(m);
printf("%d\n",q);
for(int i=0;i<q;i++)
{
printf("%d ",b[i]);
}
dfs(0);
}