#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e6 + 7;
long long mod = 998244353, mod2 = 1e9 + 7, base = 131;
map<pair<long long, long long>, int> M;
map<long long, int> N, N2;
int n, m, k, t, ans[maxn];
char s[maxn];
long long h[maxn], h2[maxn], p[maxn], p2[maxn], g[maxn], g2[maxn];
inline long long get_hash(int l, int r) {
  return (h[r] - h[l - 1] * p[r - l + 1] % mod + mod) % mod;
}
inline long long get_hash2(int l, int r) {
  return (h2[r] - h2[l - 1] * p2[r - l + 1] % mod2 + mod2) % mod2;
}
int main() {
  scanf("%d%d%s%d", &n, &k, s + 1, &t);
  m = n * k;
  p[0] = 1;
  p2[0] = 1;
  for (register int i = 1; i <= m; i++) s[i + m] = s[i];
  m <<= 1;
  for (register int i = 1; i <= m; i++)
    h[i] = (h[i - 1] * base + s[i]) % mod,
    h2[i] = (h2[i - 1] * base + s[i]) % mod2, p[i] = p[i - 1] * base % mod,
    p2[i] = p2[i - 1] * base % mod2;
  for (register int j = 1; j <= t; j++) {
    scanf("%s", s + 1);
    for (register int i = 1; i <= k; i++)
      g[j] = (g[j] * base + s[i]) % mod, g2[j] = (g2[j] * base + s[i]) % mod2,
      M[make_pair(g[j], g2[j])] = j;
  }
  for (register int j = 1; j <= k; j++) {
    N.clear();
    N2.clear();
    bool flag = true;
    for (register int i = 0; i < n; i++) {
      long long now = get_hash(i * k + j, i * k + j + k - 1),
                now2 = get_hash2(i * k + j, i * k + j + k - 1);
      if ((N.count(now) && N2.count(now2)) ||
          (M.count(make_pair(now, now2)) == 0)) {
        flag = false;
        break;
      }
      N[now] = N2[now2] = 1;
      ans[i + 1] = M[make_pair(now, now2)];
    }
    if (flag) {
      printf("YES\n");
      for (register int i = 1; i <= n; i++) printf("%d ", ans[i]);
      return 0;
    }
  }
  printf("NO");
  return 0;
}
