#include <cstdio>
#include <iostream>
#include <fstream>
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <bitset>
#include <algorithm>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <string>
#include <ctime>
#include <cassert>
#include <utility>

using namespace std;

string S, W;
int N;
vector<string> words;
int f[30];
int aux[30];

bool can() {
    for(int i = 0; i < 30; i++)
        aux[i] = f[i];
    
    for(int i = 0; i < (int)W.size(); i++)
        if(aux[W[i] - 'a'] == 0)
            return false;
        else
            aux[W[i] - 'a']--;
        
    return true;
}

int main() {
//	freopen("date.in", "r", stdin);
//	freopen("date.out","w", stdout);
	
	cin >> S;
	for(int i = 0; i < (int)S.size(); i++)
        f[S[i] - 'a']++;
	
	cin >> N;
	for(int i = 0; i < N; i++) {
	    cin >> W;
        if(can())
            words.push_back(W);
	}
	sort(words.begin(), words.end());
	for(vector<string> :: iterator it = words.begin(); it != words.end(); it++)
        cout << *it << '\n';
	
	return 0;
}