#include <bits/stdc++.h>
using namespace std;
const long long mod = 100000000000031;
const int base = 41, M = 2 * 1000 * 1000 + 5;
long long h[M], p[M];
char a[M];
int mark[M], f[M], prv[M], len;
map<long long, int> m;
map<long long, int>::iterator it;
map<int, set<int> > r;
set<int>::iterator itr;
long long calc(long long x, long long y) {
  if (x == 0) {
    return 0;
  }
  if (x == 1) {
    return y;
  }
  if (x % 2 == 0) {
    return (2 * calc(x / 2, y)) % mod;
  }
  return (2 * calc((x - 1) / 2, y) + y) % mod;
}
long long getHash(int l, int r) {
  return calc((h[r] - h[l - 1] + mod) % mod, p[len * 2 - l + 1]);
}
int main() {
  int n, k, i;
  scanf("%d %d\n", &n, &k);
  len = n * k;
  p[0] = 1;
  for (i = 1; i < M; i++) {
    p[i] = (p[i - 1] * base) % mod;
  }
  for (i = 1; i <= len; i++) {
    scanf("%c", &a[i]);
  }
  for (i = len + 1; i <= len * 2; i++) {
    a[i] = a[i - len];
  }
  h[0] = 0;
  for (i = 1; i <= len * 2; i++) {
    h[i] = (h[i - 1] + (a[i] - 'a' + 1) * p[i - 1]) % mod;
  }
  int g, curlen;
  scanf("%d\n", &g);
  long long curh = 0;
  char ch;
  for (i = 1; i <= g; i++) {
    curh = 0;
    curlen = 0;
    while (1) {
      ch = getchar();
      if (!islower(ch)) {
        break;
      }
      ++curlen;
      curh = (curh + (ch - 'a' + 1) * p[curlen - 1]) % mod;
    }
    m[calc(curh, p[len * 2])] = i;
  }
  for (i = 1; i <= len * 2 - k + 1; i++) {
    it = m.find(getHash(i, i + k - 1));
    mark[i] = -1;
    if (it != m.end()) {
      mark[i] = it->second;
    }
  }
  f[len * 2 + 1] = 0;
  for (i = len * 2 - k + 1; i >= 1; i--) {
    f[i] = 0;
    if (mark[i] != -1) {
      f[i] = 1;
      itr = r[i % k].find(mark[i]);
      if (itr == r[i % k].end()) {
        f[i] = f[i] + f[i + k];
        r[i % k].insert(mark[i]);
      }
    }
  }
  for (i = 1; i <= len * 2; i++) {
    if (f[i] >= n) {
      break;
    }
  }
  if (i == len * 2 + 1) {
    puts("NO");
  } else {
    puts("YES");
    int cnt = 0;
    for (; i <= len * 2; i += k) {
      printf("%d ", mark[i]);
      ++cnt;
      if (cnt == n) {
        break;
      }
    }
  }
  return 0;
}
