#include <bits/stdc++.h>
using namespace std;
const int mod[2] = {(int)1e9 + 7, (int)1e9 + 9};
const int pw[2] = {101, 53};
pair<int, int> get_hash(string& s) {
  int a[2], x[2];
  for (int k = 0; k < 2; ++k) {
    a[k] = 0;
    x[k] = 1;
    for (int i = 1; i <= (int)s.size(); ++i) {
      a[k] = (a[k] + 1ll * x[k] * (s[i - 1] - 'a' + 1)) % mod[k];
      x[k] = 1ll * x[k] * pw[k] % mod[k];
    }
  }
  return {a[0], a[1]};
}
int expmod(int n, int p, int mod) {
  int a = 1;
  for (; p > 0; p >>= 1) {
    if (p & 1) a = a * 1ll * n % mod;
    n = 1ll * n * n % mod;
  }
  return a;
}
struct Hash {
  vector<int> h[2], p[2];
  Hash(string& s) {
    for (int i = 0; i < 2; ++i) {
      int j = 1, inv = expmod(pw[i], mod[i] - 2, mod[i]);
      h[i].resize(s.size() + 1);
      p[i].resize(s.size() + 1);
      h[i][0] = 0;
      p[i][0] = 1;
      for (int k = 1; k <= (int)s.size(); ++k) {
        j = 1ll * j * pw[i] % mod[i];
        p[i][k] = 1ll * p[i][k - 1] * inv % mod[i];
        h[i][k] = (h[i][k - 1] + j * (s[k - 1] - 'a' + 1LL)) % mod[i];
      }
    }
  }
  int query(int l, int r, int k) {
    ++l, ++r;
    int a = p[k][l] * (h[k][r] - h[k][l - 1] + 0ll) % mod[k];
    if (a < 0) a += mod[k];
    return a;
  }
  pair<int, int> range(int l, int r) {
    return {query(l, r, 0), query(l, r, 1)};
  }
};
int main() {
  ios_base ::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, k, g;
  string s;
  cin >> n >> k >> s >> g;
  vector<tuple<int, int, int>> a(g);
  vector<int> c(g, -1);
  for (int i = 0; i < g; ++i) {
    string p;
    cin >> p;
    auto [x, y] = get_hash(p);
    a[i] = {x, y, i};
  }
  sort(a.begin(), a.end());
  s += s;
  Hash h(s);
  vector<int> R(n);
  for (int i = 0; i < k; ++i) {
    bool ok = true;
    int p = 0;
    for (int j = i; j < n * k; j += k) {
      auto [x, y] = h.range(j, j + k - 1);
      int l = lower_bound(a.begin(), a.end(), make_tuple(x, y, -1)) - a.begin();
      if (l == g || make_pair(get<0>(a[l]), get<1>(a[l])) > make_pair(x, y) ||
          c[l] == i) {
        ok = false;
        break;
      }
      R[p++] = 1 + get<2>(a[l]);
      c[l] = i;
    }
    if (ok) {
      cout << "YES\n";
      for (int j = 0; j < p; ++j) cout << R[j] << ' ';
      cout << '\n';
      return 0;
    }
  }
  cout << "NO\n";
  return 0;
}
