#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize(2)
#pragma GCC optimize(3)
const int N = 1e6 + 10, p1 = 1e9 + 7, p2 = 1e9 + 9;
int n, k, len;
char s[N << 1], ch;
int strhash[N][2], hashbase[2], hashpow[2] = {1, 1}, tmp[2];
std::map<std::pair<int, int>, int> mp;
std::set<int> st;
int main() {
  int i, j, q;
  srand(time(NULL));
  scanf("%d%d", &n, &k);
  len = n * k;
  for (i = 1; i <= len; i++) {
    do s[i] = getchar();
    while (s[i] < 'a' || s[i] > 'z');
    s[len + i] = s[i];
  }
  hashbase[0] = (long long)rand() * rand() % p1,
  hashbase[1] = (long long)rand() * rand() % p2;
  for (i = 1; i <= k; i++) {
    if (i > 1)
      hashpow[0] = (long long)hashpow[0] * hashbase[0] % p1,
      hashpow[1] = (long long)hashpow[1] * hashbase[1] % p2;
    strhash[1][0] = ((long long)strhash[1][0] * hashbase[0] % p1 + s[i]) % p1,
    strhash[1][1] = ((long long)strhash[1][1] * hashbase[1] % p2 + s[i]) % p2;
  }
  for (i = 2; i <= len; i++)
    strhash[i][0] =
        ((strhash[i - 1][0] - (long long)s[i - 1] * hashpow[0] % p1 + p1) % p1 *
             hashbase[0] % p1 +
         s[i + k - 1]) %
        p1,
    strhash[i][1] =
        ((strhash[i - 1][1] - (long long)s[i - 1] * hashpow[1] % p2 + p2) % p2 *
             hashbase[1] % p2 +
         s[i + k - 1]) %
        p2;
  scanf("%d", &q);
  for (i = 1; i <= q; i++) {
    tmp[0] = tmp[1] = 0;
    for (j = 1; j <= k; j++) {
      do ch = getchar();
      while (ch < 'a' || ch > 'z');
      tmp[0] = ((long long)tmp[0] * hashbase[0] % p1 + ch) % p1,
      tmp[1] = ((long long)tmp[1] * hashbase[1] % p2 + ch) % p2;
    }
    if (mp[std::make_pair(tmp[0], tmp[1])]) return 233;
    mp[std::make_pair(tmp[0], tmp[1])] = i;
  }
  int tmp;
  for (i = 1; i <= k; i++) {
    st.clear();
    for (j = 0; j < n; j++) {
      tmp = mp[std::make_pair(strhash[(i + j * k - 1) % len + 1][0],
                              strhash[(i + j * k - 1) % len + 1][1])];
      if (!tmp || st.count(tmp))
        break;
      else
        st.insert(tmp);
    }
    if (j == n) {
      puts("YES");
      for (j = 0; j < n; j++)
        printf("%d ",
               mp[std::make_pair(strhash[(i + j * k - 1) % len + 1][0],
                                 strhash[(i + j * k - 1) % len + 1][1])]);
      return 0;
    }
  }
  puts("NO");
  return 0;
}
