#include <bits/stdc++.h>
using namespace std;
ostream& operator<<(ostream& os, pair<long long int, long long int> h) {
  return os << "( " << h.first << ", " << h.second << " )" << endl;
}
pair<long long int, long long int> operator+(
    pair<long long int, long long int> a, long long int x) {
  return {a.first + x, a.second + x};
}
pair<long long int, long long int> operator-(
    pair<long long int, long long int> a, long long int x) {
  return {a.first - x, a.second - x};
}
pair<long long int, long long int> operator*(
    pair<long long int, long long int> a, long long int x) {
  return {a.first * x, a.second * x};
}
pair<long long int, long long int> operator+(
    pair<long long int, long long int> x,
    pair<long long int, long long int> y) {
  return {x.first + y.first, x.second + y.second};
}
pair<long long int, long long int> operator-(
    pair<long long int, long long int> x,
    pair<long long int, long long int> y) {
  return {x.first - y.first, x.second - y.second};
}
pair<long long int, long long int> operator*(
    pair<long long int, long long int> x,
    pair<long long int, long long int> y) {
  return {x.first * y.first, x.second * y.second};
}
pair<long long int, long long int> operator%(
    pair<long long int, long long int> x,
    pair<long long int, long long int> y) {
  return {x.first % y.first, x.second % y.second};
}
const pair<long long int, long long int> p = {15485867, 32452843};
const pair<long long int, long long int> mod = {1000000021, 1e9 + 9};
int n, k;
string str, sub;
map<pair<long long int, long long int>, int> mp;
pair<long long int, long long int> h[5000006], p_pow[5000006];
pair<long long int, long long int> Hash(string s) {
  pair<long long int, long long int> val = {0, 0};
  for (int i = 0; i < s.size(); i++) {
    val = (val + p_pow[i] * (int)s[i]) % mod;
  }
  return (val * p_pow[5000006 - 2]) % mod;
}
pair<long long int, long long int> getHash(int id, int len) {
  pair<long long int, long long int> tmp =
      (h[id + len - 1] + mod - h[id - 1]) % mod;
  return (tmp * p_pow[5000006 - 1 - id]) % mod;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k >> str;
  p_pow[0] = {1, 1};
  str += str;
  for (int i = 1; i < 5000006; i++) {
    p_pow[i] = (p_pow[i - 1] * p) % mod;
  }
  for (int i = 0; i < str.size(); i++) {
    h[i + 1] = (h[i] + p_pow[i] * (int)str[i]) % mod;
  }
  int g;
  cin >> g;
  for (int i = 1; i <= g; i++) {
    cin >> sub;
    mp[Hash(sub)] = i;
  }
  for (int i = 1; i <= k; i++) {
    vector<int> ans;
    set<int> rec;
    for (int j = i, cnt = 0; cnt < n; j += k, cnt++) {
      pair<long long int, long long int> tmp = getHash(j, k);
      if (mp.find(tmp) == mp.end()) break;
      rec.insert(mp[tmp]);
      ans.push_back(mp[tmp]);
    }
    if (rec.size() == n) {
      cout << "YES" << endl;
      for (int i = 0; i < ans.size(); i++) cout << ans[i] << " ";
      cout << endl;
      return 0;
    }
  }
  cout << "NO" << endl;
  return 0;
}
