#include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <string> #include <iostream> using namespace std; int seq[26], let[26]; vector<string> result; char word[30]; int n, lresult=0, lword; char c; void readSequence() { c = 0; while (1) { scanf("%c", &c); if (c == '\n') return; seq[c-'a']++; } } /* void add() { int i; word[lword] = 0; for (i=lresult; i>0; i--) { if (strcmp(result[i-1], word) > 0) strcpy(result[i], result[i-1]); else break; } strcpy(result[i], word); lresult++; }*/ void add1() { word[lword] = 0; string s (word); result.push_back(s); lresult++; } void print() { for (int i=0; i<lresult; ++i) //printf("%s\n", result[i]); cout << result[i] << '\n'; } int main () { freopen("date.in", "rt", stdin); //freopen("date.out", "wt", stdout); readSequence(); scanf("%d\n", &n); for (;n;--n) { c = lword = 0; memset(let, 0, 26); while (1) { scanf("%c", &c); if (c == '\n') break; word[lword++] = c; c -= 'a'; let[c]++; if (let[c] > seq[c]) break; } if (c != '\n') { while (c != '\n') scanf("%c", &c); } else add1(); } sort(result.begin(), result.end()); print(); return 0; }