#include <bits/stdc++.h>
using namespace std;
struct node {
  char s[1010];
  long long Hash;
} arr[100010];
map<long long, long long> match;
char s[10010];
int n, m, dp[10010];
long long MOD = 1e9 + 7, POW[10010];
int main() {
  int i, j, k, len;
  long long ret;
  POW[0] = 1;
  for (i = 1; i <= 10000; i++) POW[i] = POW[i - 1] * MOD;
  scanf("%d", &n);
  scanf("%s", s + 1);
  scanf("%d", &m);
  for (k = 1; k <= m; k++) {
    scanf("%s", arr[k].s + 1);
    ret = 0;
    len = strlen(arr[k].s + 1);
    for (i = 1; i <= len; i++)
      if (arr[k].s[i] >= 97)
        ret = ret * MOD + arr[k].s[i];
      else
        ret = ret * MOD + arr[k].s[i] + 32;
    match[ret] = k;
  }
  dp[n + 1] = 1;
  for (i = n + 1; i > 1; i--)
    if (dp[i] > 0) {
      ret = 0;
      for (j = 1; j <= 1000 && i - j >= 1; j++) {
        ret = ret * MOD + s[i - j];
        if (match.find(ret) != match.end()) {
          k = match[ret];
          dp[i - j] = k;
        }
      }
    }
  len = 1;
  while (len <= n) {
    printf("%s", arr[dp[len]].s + 1);
    len += strlen(arr[dp[len]].s + 1);
    if (len <= n)
      printf(" ");
    else
      printf("\n");
  }
}
