#include <bits/stdc++.h>
using namespace std;
string s;
vector<long long> power, power2;
const long long base = 31;
const long long M = 1e9 + 9;
const long long base2 = 37;
const long long M2 = 1e9 + 7;
pair<long long, long long> make_hash(
    string &s, vector<pair<long long, long long> > &hash1) {
  hash1[0].first = s[0] - 'a' + 1;
  hash1[0].second = s[0] - 'a' + 1;
  for (int i = 1; i < s.size(); i++) {
    hash1[i].first = (hash1[i - 1].first * base + s[i] - 'a' + 1) % M;
    hash1[i].second = (hash1[i - 1].second * base2 + s[i] - 'a' + 1) % M2;
  }
  return hash1.back();
}
pair<long long, long long> get_hash(
    int l, int r, vector<pair<long long, long long> > &hash1) {
  pair<long long, long long> ans;
  if (l == 0) {
    ans.first = hash1[r].first;
    ans.second = hash1[r].second;
    return ans;
  }
  ans.first =
      (hash1[r].first - hash1[l - 1].first * power[r - l + 1] % M + M) % M;
  ans.second =
      (hash1[r].second - hash1[l - 1].second * power2[r - l + 1] % M2 + M2) %
      M2;
  return ans;
}
int main() {
  int n, k, m;
  map<pair<long long, long long>, int> dan;
  cin >> n >> k;
  power.resize(2 * n * k + 5);
  power[0] = 1;
  power2.resize(2 * n * k + 5);
  power2[0] = 1;
  for (int i = 1; i < 2 * n * k + 5; i++) {
    power[i] = (power[i - 1] * base) % M;
    power2[i] = (power2[i - 1] * base2) % M2;
  }
  cin >> s;
  s = s + s;
  cin >> m;
  vector<pair<long long, long long> > hash_dan(s.size()), tmp(k);
  vector<long long> ans(n * k, 0);
  make_hash(s, hash_dan);
  for (int i = 0; i < m; i++) {
    cin >> s;
    dan[make_hash(s, tmp)] = i + 1;
  }
  for (int i = 0; i < n * k; i++) {
    ans[i] = dan[get_hash(i, i + k - 1, hash_dan)];
  }
  set<long long> check;
  for (int i = 0; i < k; i++) {
    bool boy = 1;
    check.clear();
    for (int j = i; j < n * k; j += k) {
      if (!ans[j] || check.find(ans[j]) != check.end()) {
        boy = 0;
        break;
      }
      check.insert(ans[j]);
    }
    if (boy) {
      cout << "YES\n";
      for (int j = i; j < n * k; j += k) {
        cout << ans[j] << " ";
      }
      return 0;
    }
  }
  cout << "NO";
  return 0;
}
