#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int base = 101;
inline void chmax(int& x, int y) {
  if (x < y) x = y;
}
inline void chmin(int& x, int y) {
  if (x > y) x = y;
}
inline int LSB(int i) { return (i & -i); }
int n, m, dp[10005];
char s[10005], str[10005];
map<long long, string> mp;
vector<string> v;
inline long long Hash(int a, int b) { return (1LL * a * base + b) % MOD; }
int main() {
  scanf("%d%s%d", &n, &s, &m);
  for (int i = 0; i < m; i++) {
    scanf("%s", &str);
    long long h = 1;
    for (int j = 0; j < strlen(str); j++) {
      h = Hash(h, tolower(str[j]));
    }
    mp[h] = str;
  }
  fill(dp, dp + n, -1);
  dp[0] = 0;
  for (int i = 0; i < n; i++) {
    long long h = 1;
    for (int j = i; j >= 0; j--) {
      h = Hash(h, s[j]);
      if (dp[j] != -1 && mp.find(h) != mp.end()) {
        dp[i + 1] = h;
        break;
      }
    }
  }
  int p = n;
  while (p > 0) {
    v.push_back(mp[dp[p]]);
    p -= mp[dp[p]].length();
  }
  reverse(v.begin(), v.end());
  for (string& i : v) printf("%s ", &i[0]);
  return 0;
}
