#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;
}