#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>


using namespace std;

bool used[70001];
string sentence;
string words[70001];
vector<string> sol;
int wordFrec[70001][100];
int currentFrec[100];
int n;

bool cmpFrec(int x)
{
    for(int i = 0; i <= 99 ;i++)
    {
        if(wordFrec[x][i] != currentFrec[i])
            return false;
        if(i == 'Z'-'A')
            i = 'z'-'A'-1;
    }
    return true;
}


void searchSolution()
{
    for(int i=1;i<=n;i++)
        if(!used[i] && cmpFrec(i))
        {
            sol.push_back(words[i]);
            used[i] = true;
        }
}

int main()
{
    cin>>sentence;
    cin>>n;
    for(int i = 1; i <= n; i++)
    {
        cin>>words[i];
        for(int j = 0; j < words[i].length(); j++)
            wordFrec[i][words[i][j] - 'A']++;
    }
    for(int i = 0; i < sentence.length(); i ++)
    {
        memset(currentFrec,0,sizeof(currentFrec));
        for(int j = 0; j + i < sentence.length(); j++)
        {
            currentFrec[sentence[i+j] - 'A'] ++;
            searchSolution();
        }

    }
    sort(sol.begin(), sol.end());
    for(vector<string>::iterator it = sol.begin(); it != sol.end(); it++)
        cout<<*it<<'\n';
    return 0;
}