#include <bits/stdc++.h>
using namespace std;
long long powers37[10010], powers41[10010];
long long yes[10010];
int N;
string str;
set<long long> arr37, arr41;
long long HASH37[10010], HASH41[10010];
inline void pre(void) {
  powers37[0] = powers41[0] = 1;
  for (int i = 1; i < 10010; i++) {
    powers37[i] = (powers37[i - 1] * 37);
    powers41[i] = (powers41[i - 1] * 41);
  }
  for (int i = 1; i <= N; i++) {
    HASH37[i] = ((HASH37[i - 1] * 37) + str[i - 1]);
    HASH41[i] = ((HASH41[i - 1] * 41) + str[i - 1]);
  }
}
pair<long long, long long> getHashF(int start, int end) {
  long long foo, bar;
  foo = HASH37[end] - (HASH37[start - 1] * powers37[end - start + 1]);
  bar = HASH41[end] - (HASH41[start - 1] * powers41[end - start + 1]);
  return pair<long long, long long>(foo, bar);
}
bool check(int start, int end) {
  pair<long long, long long> first = getHashF(start, end);
  if (arr37.find(first.first) != arr37.end() and
      arr41.find(first.second) != arr41.end())
    return true;
  return false;
}
map<long long, string> rmymap37;
map<string, long long> mymap37;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cin >> N >> str;
  reverse(str.begin(), str.end());
  pre();
  int m, i;
  cin >> m;
  string a[m];
  for (i = 0; i < m; i++) {
    cin >> a[i];
    string temp = a[i];
    transform(a[i].begin(), a[i].end(), a[i].begin(), ::tolower);
    long long curr37 = 0, curr41 = 0;
    for (int j = 1; j <= (int)a[i].size(); j++) {
      curr37 = ((curr37 * 37) + a[i][j - 1]);
      curr41 = ((curr41 * 41) + a[i][j - 1]);
    }
    arr37.insert(curr37);
    arr41.insert(curr41);
    mymap37[a[i]] = curr37;
    a[i] = temp;
    rmymap37[curr37] = a[i];
  }
  yes[0] = 0;
  vector<int> myset;
  myset.push_back(0);
  for (i = 1; i < N + 1; i++) {
    for (int it = myset.size() - 1; it >= 0; it--) {
      int j = myset[it];
      j++;
      if (check(j, i)) {
        yes[i] = j - 1;
        myset.push_back(i);
        break;
      }
    }
  }
  i = N;
  while (i > 0) {
    int j = yes[i];
    string now;
    while (i > 0 and i > j) {
      now += str[i - 1];
      i--;
    }
    reverse(now.begin(), now.end());
    now = rmymap37[mymap37[now]];
    cout << now << " ";
  }
  return 0;
}
