#include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <vector> #include <map> #include <set> #include <algorithm> #include <tr1/unordered_map> using namespace std; using namespace std::tr1; char seq[36], S[36]; int N, f[256], f2[256]; vector<string> rez; int main() { scanf("%s", seq); for (int i=0; seq[i]!='\0'; ++i) ++f[seq[i]]; scanf("%d", &N); for (int i=0; i<N; ++i) { scanf("%s", S); memset(f2, 0, sizeof(f2)); for (int j=0; S[j]!='\0'; ++j) ++f2[S[j]]; bool ok = true; for (int k=0; k<256; ++k) if (f2[k] > f[k]) { ok = false; break; } if (ok) { rez.push_back(S); } } sort(rez.begin(), rez.end()); for (int i=0; i<rez.size(); ++i) printf("%s\n", rez[i].c_str()); return 0; }