#include <bits/stdc++.h>
using namespace std;
const int N = 2000050;
const int INF = 1e9;
const int MOD = 1e9 + 7;
string s, t;
map<pair<int, int>, int> can;
set<int> cur;
int pw1[N], pw2[N], h1[N], h2[N], ans[N];
int mod1, mod2, p1, p2;
bool prime(int x) {
  if (x == 1) return false;
  for (int i = 2; i * i <= x; i++)
    if (x % i == 0) return false;
  return true;
}
int next_prime(int x) {
  while (!prime(x)) x++;
  return x;
}
int get1(int left, int right) {
  right++;
  return ((long long)h1[left] -
          (long long)h1[right] * pw1[right - left] % mod1 + mod1) %
         mod1;
}
int get2(int left, int right) {
  right++;
  return ((long long)h2[left] -
          (long long)h2[right] * pw2[right - left] % mod2 + mod2) %
         mod2;
}
int main() {
  ios::sync_with_stdio(0);
  srand(time(0));
  mod1 = next_prime(1e9 + 1000 + rand() % 10000);
  mod2 = next_prime(1e9 + 1000 + rand() % 10000);
  p1 = next_prime(100 + rand() % 200);
  p2 = next_prime(100 + rand() % 200);
  int n, k;
  cin >> n >> k;
  pw1[0] = 1;
  pw2[0] = 1;
  for (int i = 1; i <= 2 * n * k; i++) {
    pw1[i] = (long long)pw1[i - 1] * p1 % mod1;
    pw2[i] = (long long)pw2[i - 1] * p2 % mod2;
  }
  cin >> s;
  s = s + s;
  h1[n * 2] = 0;
  h2[n * 2] = 0;
  for (int i = 2 * n * k - 1; i >= 0; i--) {
    h1[i] = ((long long)h1[i + 1] * p1 + (long long)(s[i])) % mod1;
    h2[i] = ((long long)h2[i + 1] * p2 + (long long)(s[i])) % mod2;
  }
  int m;
  cin >> m;
  for (int i = 0; i < m; i++) {
    cin >> t;
    int hs1 = 0, hs2 = 0;
    for (int j = (int)t.length() - 1; j >= 0; j--) {
      hs1 = ((long long)hs1 * p1 + (long long)(t[j])) % mod1;
      hs2 = ((long long)hs2 * p2 + (long long)(t[j])) % mod2;
    }
    can[make_pair(hs1, hs2)] = i;
  }
  for (int i = 0; i < k; i++) {
    cur.clear();
    for (int j = i; j < i + n * k; j += k) {
      pair<int, int> seg = make_pair(get1(j, j + k - 1), get2(j, j + k - 1));
      if (can.count(seg)) {
        ans[j / k] = can[seg];
        cur.insert(ans[j / k]);
      }
    }
    if (cur.size() == n) {
      cout << "YES\n";
      for (int i = 0; i < n; i++) cout << ans[i] + 1 << " ";
      return 0;
    }
  }
  cout << "NO\n";
  return 0;
}
