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