#include<iostream>
#include<string>
#include<vector>
#include<map>
#include<algorithm>
using namespace std;
vector<string> vi;
map<char, int> dict;
string str;
int n;
bool cmp(string A, string B)
{
int len = min(A.length(), B.length());
for (int i = 0; i < len; i++)
{
if (A[i] != B[i])
return dict[A[i]] <= dict[B[i]];
}
return A.length() < B.length();
}
int main(void)
{
while (getline(cin, str))
{
cin >> n;
cin.ignore();
string temp;
temp.clear();
vi.clear();
for (int i = 0; i < n; i++)
{
temp.clear();
getline(cin, temp);
vi.push_back(temp);
}
dict.clear();
for (int i = 0; i < 26; i++)
{
dict[str[i]] = i;
}
sort(vi.begin(), vi.end(), cmp);
for (int i = 0; i < n; i++)
{
cout << vi[i];
if (i < n - 1)
cout << endl;
}
}
return 0;
}
100%