#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7, mod2 = 1e9 + 9;
const int h = 233, h2 = 131;
const int maxn = 2e6 + 10;
long long ha[maxn], ha2[maxn], poww[maxn], poww2[maxn], sub[maxn], sub2[maxn];
string s;
int n, k, g, ans[maxn];
int vis[maxn], vis2[maxn];
map<pair<int, int>, int> m;
int main() {
  scanf("%d%d", &n, &k);
  cin >> s;
  int len = s.length();
  s = " " + s;
  s += s.substr(1, k);
  poww[0] = 1;
  poww2[0] = 1;
  for (int i = 1; i <= k; i++) {
    poww[i] = (poww[i - 1] * h) % mod;
    poww2[i] = (poww2[i - 1] * h2) % mod2;
  }
  for (int i = 1; i <= len + k - 1; i++) {
    ha[i] = (ha[i - 1] * h + s[i] - 'a') % mod;
    ha2[i] = (ha2[i - 1] * h2 + s[i] - 'a') % mod2;
  }
  for (int i = 1; i <= len; i++) {
    sub[i] = ((ha[i + k - 1] - ha[i - 1] * poww[k]) % mod + mod) % mod;
    sub2[i] = ((ha2[i + k - 1] - ha2[i - 1] * poww2[k]) % mod2 + mod2) % mod2;
  }
  scanf("%d", &g);
  for (int i = 1; i <= g; i++) {
    string ss;
    cin >> ss;
    long long tt = 0;
    long long tt2 = 0;
    for (int i = 0; i < k; i++) {
      tt = (tt * h + ss[i] - 'a') % mod;
      tt2 = (tt2 * h2 + ss[i] - 'a') % mod2;
    }
    m[make_pair(tt, tt2)] = i;
  }
  int flag = 0, num = 0;
  for (int i = 1; i <= k; i++) {
    num = 0;
    for (int j = i; j <= i + len - 1; j += k) {
      int tt = m[make_pair(sub[j], sub2[j])];
      if (vis[tt] == i || !tt) {
        break;
      }
      vis[tt] = i;
      ans[num++] = tt;
    }
    if (num == n) {
      flag = 1;
      break;
    }
  }
  if (flag) {
    printf("YES\n");
    for (int i = 0; i < num; i++) {
      printf("%d ", ans[i]);
    }
  } else {
    printf("NO\n");
  }
  return 0;
}
