#include <bits/stdc++.h>
using namespace std;
const int maxn = 10000 + 5;
const int maxm = 1e5 + 5;
const int totlen = 1e6 + 5;
char str[maxm][1005];
int len[maxm];
char s[maxn];
int n, m;
int nex[totlen][27], rec[totlen], root, tot;
int ans[maxm], k;
bool isEnd;
void init() {
  root = 0;
  tot = 0;
  k = 0;
  isEnd = false;
}
void insert(int x) {
  int u = root;
  for (int i = len[x] - 1; i >= 0; i--) {
    int t = tolower(str[x][i]) - 'a';
    if (!nex[u][t]) nex[u][t] = ++tot;
    u = nex[u][t];
  }
  rec[u] = x;
}
void dfs(int pos) {
  if (isEnd) return;
  if (pos == n) {
    isEnd = true;
    return;
  }
  int u = root;
  for (int i = pos + 1; i <= n; i++) {
    int t = s[i] - 'a';
    u = nex[u][t];
    if (!u) break;
    if (rec[u]) {
      ans[++k] = rec[u];
      dfs(pos + len[rec[u]]);
      if (isEnd) break;
      --k;
    }
  }
}
int main() {
  init();
  scanf("%d%s", &n, s + 1);
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) {
    scanf("%s", str[i]);
    len[i] = strlen(str[i]);
    insert(i);
  }
  dfs(0);
  for (int i = 1; i <= k; i++) printf("%s%c", str[ans[i]], i == k ? '\n' : ' ');
  return 0;
}
