#include "bits/stdc++.h" #include <ext/pb_ds/assoc_container.hpp> // Common file #include <ext/pb_ds/tree_policy.hpp> // Including tree_order_statistics_node_update using namespace std; using namespace __gnu_pbds; #pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>ordered_set; //https://codeforces.com/blog/entry/11080 //find_by_order(k) : returns an iterator to the k-th largest element (counting from zero) //order_of_key(k) : number of elements in set that are strictly smaller than k typedef long long ll; typedef long double ld; typedef pair<int, int> pii; typedef pair<ll,ll> pll; typedef pair<ld,ld> pld; typedef vector<int> vi; typedef vector<ll> vll; typedef vector<ld> vld; typedef vector<pii> vpi; typedef vector<pll> vpl; #define rep(i,a,b) for(int i=a;i<b;i++) #define rrep(i,a,b) for(int i=b-1;i>=a;i--) #define endl '\n' #define google(x) cout<<"Case #"<<x<<": "; #define sz(x) (int)(x).size() #define mp make_pair #define pb push_back #define pob pop_back #define ff first #define ss second #define lb lower_bound #define ub upper_bound #define all(x) x.begin(), x.end() #define mem(a,x) memset(a,x,sizeof(a)) #define ins insert #define mod 1000000007 #define MOD1 998244353 #define fast_io cin.tie(0)->sync_with_stdio(0);cin.exceptions(cin.failbit); // const long long N=(long long)(1e5+5); // const long long inf=(long long)(1e18); void solve(); void init_code(){ fast_io; #ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif } int main() { init_code(); int t = 1; // cin>>t; while(t--){ solve(); } return 0; } void solve() { string x; cin>>x; map<char,char> m; rep(i,0,26){ m[x[i]]=char('a'+i); } int n; cin>>n; vector<string> u; map<string ,int> k; rep(i,0,n){ string s; cin>>s; u.pb(s); string t=""; rep(i,0,s.length()){ t+=m[s[i]]; } k[t]=i; } for(auto &it: k){ cout<<u[it.ss]<<endl; } }