#include <bits/stdc++.h>
using namespace std;
#define maxn 105
#define base 7243
char s[1005];
int h[1005];
int pb[1005];
char ss[maxn][maxn];
int hh[maxn];
int len;
int L[maxn];
int n;
bool used[maxn];
bool goal=false;
int iter[maxn];
int in=0;
void Try(int index){
if(index==len){
goal=true;
cout<<in<<endl;
for(int i=0;i<in;++i){
cout<<ss[iter[i]]<<endl;
}
}
if(index>len or goal){
return;
}
for(int i=0;i<n;++i){
if(used[i]) continue;
if(hh[i]==h[index+L[i]]-h[index]*pb[L[i]]){
used[i]=true;
iter[in++]=i;
Try(index+L[i]);
--in;
used[i]=false;
}
}
}
int main() {
cin>>s;
cin>>n;
for(int i=0;i<n;++i){
cin>>ss[i];
}
len=strlen(s);
pb[0]=1;
h[0]=0;
for(int i=1;i<=len;++i){
pb[i]=pb[i-1]*base;
h[i]=h[i-1]*base+s[i-1];
}
for(int i=0;i<n;++i){
int j;
int x=strlen(ss[i]);
L[i]=x;
int t=0;
for(j=0;j<x;++j){
//cout<<t<<" ";
t=t*base+ss[i][j];
}
//cout<<endl;
hh[i]=t;
}
//cout<<hh[0]<<" "<<ss[0]<< endl;
//cout<<h[5]-h[2]*pb[3]<<" " <<pb[3]<<endl;
fill(used,used+n,false);
Try(0);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIG1heG4gMTA1CiNkZWZpbmUgYmFzZSA3MjQzCgoKY2hhciBzWzEwMDVdOwppbnQgaFsxMDA1XTsKaW50IHBiWzEwMDVdOwoKY2hhciBzc1ttYXhuXVttYXhuXTsKaW50IGhoW21heG5dOwoKaW50IGxlbjsKaW50IExbbWF4bl07CmludCBuOwoKYm9vbCB1c2VkW21heG5dOwoKYm9vbCBnb2FsPWZhbHNlOwoKaW50IGl0ZXJbbWF4bl07CmludCBpbj0wOwoKdm9pZCBUcnkoaW50IGluZGV4KXsKCWlmKGluZGV4PT1sZW4pewoJCWdvYWw9dHJ1ZTsKCQljb3V0PDxpbjw8ZW5kbDsKCQlmb3IoaW50IGk9MDtpPGluOysraSl7CgkJCWNvdXQ8PHNzW2l0ZXJbaV1dPDxlbmRsOwoJCX0KCX0KCWlmKGluZGV4PmxlbiBvciBnb2FsKXsKCQlyZXR1cm47Cgl9Cglmb3IoaW50IGk9MDtpPG47KytpKXsKCQlpZih1c2VkW2ldKSBjb250aW51ZTsKCQlpZihoaFtpXT09aFtpbmRleCtMW2ldXS1oW2luZGV4XSpwYltMW2ldXSl7CgkJCXVzZWRbaV09dHJ1ZTsKCQkJaXRlcltpbisrXT1pOwoJCQlUcnkoaW5kZXgrTFtpXSk7CgkJCS0taW47CgkJCXVzZWRbaV09ZmFsc2U7CgkJfQoJfQp9CgoKaW50IG1haW4oKSB7CgljaW4+PnM7CgljaW4+Pm47Cglmb3IoaW50IGk9MDtpPG47KytpKXsKCQljaW4+PnNzW2ldOwoJfQoJCglsZW49c3RybGVuKHMpOwoJcGJbMF09MTsKCWhbMF09MDsKCWZvcihpbnQgaT0xO2k8PWxlbjsrK2kpewoJCXBiW2ldPXBiW2ktMV0qYmFzZTsKCQloW2ldPWhbaS0xXSpiYXNlK3NbaS0xXTsKCX0KCQoJZm9yKGludCBpPTA7aTxuOysraSl7CgkJaW50IGo7CgkJaW50IHg9c3RybGVuKHNzW2ldKTsKCQlMW2ldPXg7CgkJaW50IHQ9MDsKCQlmb3Ioaj0wO2o8eDsrK2opewoJCQkvL2NvdXQ8PHQ8PCIgIjsKCQkJdD10KmJhc2Urc3NbaV1bal07CgkJfQoJCS8vY291dDw8ZW5kbDsKCQloaFtpXT10OwoJfQoJCgkvL2NvdXQ8PGhoWzBdPDwiICI8PHNzWzBdPDwgZW5kbDsKCS8vY291dDw8aFs1XS1oWzJdKnBiWzNdPDwiICIgPDxwYlszXTw8ZW5kbDsKCQoJZmlsbCh1c2VkLHVzZWQrbixmYWxzZSk7CglUcnkoMCk7CgoJcmV0dXJuIDA7Cn0=