#include <iostream> #include <cstring> #include <algorithm> using namespace std; char c1[101]; int nr1[101], nr2[101], i, j, ok, n; struct cuv { char a[51]; }; cuv c[70001]; bool cmp(cuv a, cuv b) { return strcmp(a.a, b.a)<0; } int main() { cin>>c1; cin>>n; int lim=strlen(c1); for(i=0; i<lim; i++) { nr1[c1[i]-'a']++; } for(i=1; i<=n; i++) { cin>>c[i].a; } sort(c+1, c+n+1, cmp); for(i=1; i<=n; i++) { int p=strlen(c[i].a); for(j=0; j<p; j++) { nr2[c[i].a[j]-'a']++; } ok=1; for(j=0; j<='z'-'a'; j++) { if(nr1[j]<nr2[j]) ok=0; nr2[j]=0; } if(ok) { cout<<c[i].a<<"\n"; } } }