#include
using namespace std;
void generate_subsequence(char *input,char *output,int i,int j,int &count){
// base case
if(input[i]==β\0β){
output[j]=β\0β;
cout<<output<<" ";
count++;
return;
}
//recurssiv case
//including the current character
output[j]=input[i];
generate_subsequence(input,output,i+1,j+1,count);
//excluding the current character
generate_subsequence(input,output,i+1,j,count);
return;
}
int main() {
char s[10000];
cin>>s;
char out[10000];
int count=0;
generate_subsequence(s,out,0,0,count);
cout<<endl;
cout<<count;
}