#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7, p = 31, p2 = 179;
vector<long long> pst, hm, hm2, pst2;
pair<long long, long long> count_hash(string& s) {
  long long res = 0;
  for (auto e : s) {
    res *= p;
    res += e;
    res %= mod;
  }
  long long res2 = 0;
  for (auto e : s) {
    res2 *= p2;
    res2 += e;
    res2 %= mod;
  }
  return make_pair(res, res2);
}
void make_hash(string& s) {
  pst.resize(s.size() + 2);
  hm.resize(s.size() + 1);
  pst[0] = 1;
  for (int i = 0; i < s.size(); i++) {
    hm[i + 1] = (hm[i] * p + s[i]) % mod;
    pst[i + 1] = pst[i] * p % mod;
  }
  hm2.resize(s.size() + 1);
  pst2.resize(s.size() + 1);
  pst2[0] = 1;
  for (int i = 0; i < s.size(); i++) {
    hm2[i + 1] = (hm2[i] * p2 + s[i]) % mod;
    pst2[i + 1] = pst2[i] * p2 % mod;
  }
}
pair<long long, long long> get_hash(int begin, int len) {
  return make_pair(
      (hm[begin + len] - hm[begin] * pst[len] % mod + mod) % mod,
      (hm2[begin + len] - hm2[begin] * pst2[len] % mod + mod) % mod);
}
int main() {
  int n, k;
  cin >> n >> k;
  string s;
  cin >> s;
  s += s;
  make_hash(s);
  int g;
  cin >> g;
  set<pair<long long, long long>> popular;
  map<pair<long long, long long>, int> num;
  for (int i = 0; i < g; i++) {
    string t;
    cin >> t;
    auto temp = count_hash(t);
    popular.insert(temp);
    num[temp] = i + 1;
  }
  for (int i = 0; i < k; i++) {
    set<pair<long long, long long>> used;
    vector<int> res;
    for (int j = 0; j < n; j++) {
      auto temp = get_hash(i + j * k, k);
      if (popular.count(temp) == 1 && used.count(temp) == 0) {
        res.push_back(num[temp]);
        used.insert(temp);
      } else
        break;
    }
    if (res.size() == n) {
      cout << "YES\n";
      for (auto e : res) cout << e << " ";
      return 0;
    }
  }
  cout << "NO";
}
