#include <bits/stdc++.h>
using namespace std;
const int N = 1e4 + 5;
const int Q = 1e5 + 5;
const int mod = 1e9 + 7;
const int mod2 = 1e9 + 9;
const int inf = 1e9 + 7;
const int P = 29;
const int P2 = 31;
int n, i, j, m;
int dp[N], H[N], K[N], H2[N], K2[N];
char temp[N];
string str, str2, str3[Q];
map<int, int> M, M2;
int get(int x, int y) {
  if (x == 0) return H[y];
  return ((long long)H[y] - (long long)H[x - 1] * K[y - x + 1] % mod + mod) %
         mod;
}
int get2(int x, int y) {
  if (x == 0) return H2[y];
  return ((long long)H2[y] - (long long)H2[x - 1] * K2[y - x + 1] % mod2 +
          mod2) %
         mod2;
}
int f(int x) {
  int &r = dp[x], i;
  if (r != -1) return r;
  r = 0;
  if (x == n) return r = 1;
  for (i = x; i <= x + 1000; i++)
    if (i < n and M.find(get(x, i)) != M.end() and
        M2.find(get2(x, i)) != M.end())
      r |= f(i + 1);
  return r;
}
void f2(int x) {
  int i;
  if (x == n) return;
  for (i = x; i <= x + 1000; i++)
    if (i < n and M.find(get(x, i)) != M.end() and
        M2.find(get2(x, i)) != M.end()) {
      if (dp[i + 1]) {
        cout << str3[M[get(x, i)]] << ' ';
        f2(i + 1);
        break;
      }
    }
}
int main() {
  scanf("%d", &n);
  scanf("%s", temp);
  str = temp;
  H[0] = str[0] - 'a' + 1;
  H2[0] = str[0] - 'a' + 1;
  for (i = 1; i < str.size(); i++) {
    H[i] = ((long long)H[i - 1] * P % mod + str[i] - 'a' + 1) % mod;
    H2[i] = ((long long)H2[i - 1] * P2 % mod2 + str[i] - 'a' + 1) % mod2;
  }
  K[0] = 1;
  K2[0] = 1;
  for (i = 1; i < N; i++) {
    K[i] = (long long)K[i - 1] * P % mod;
    K2[i] = (long long)K2[i - 1] * P2 % mod2;
  }
  scanf("%d", &m);
  for (i = 1; i <= m; i++) {
    scanf("%s", temp);
    str2 = temp;
    str3[i] = str2;
    for (j = 0; j < str2.size(); j++)
      if (str2[j] >= 'A' and str2[j] <= 'Z') str2[j] = str2[j] - 'A' + 'a';
    reverse(str2.begin(), str2.end());
    int q = 0;
    for (j = 0; j < str2.size(); j++)
      q = ((long long)q * P % mod + str2[j] - 'a' + 1) % mod;
    M[q] = i;
    q = 0;
    for (j = 0; j < str2.size(); j++)
      q = ((long long)q * P2 % mod2 + str2[j] - 'a' + 1) % mod2;
    M2[q] = i;
  }
  memset(dp, -1, sizeof dp);
  f(0);
  f2(0);
}
