#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e6 + 9;
const long long base = 233333;
const long long MOD1 = 1e9 + 7;
const long long MOD2 = 1e9 + 9;
char str[maxn];
map<pair<long long, long long>, int> mp;
map<pair<long long, long long>, int> vis;
long long p1[maxn];
long long p2[maxn];
long long hash_1[maxn];
long long hash_2[maxn];
void init() {
  int len = strlen(str);
  p1[0] = 1;
  p2[0] = 1;
  hash_1[0] = 0;
  hash_2[0] = 0;
  for (int i = 0; i < len; i++) {
    hash_1[i + 1] = (hash_1[i] * base + str[i]) % MOD1;
    hash_2[i + 1] = (hash_2[i] * base + str[i]) % MOD2;
    p1[i + 1] = (p1[i] * base) % MOD1;
    p2[i + 1] = (p2[i] * base) % MOD2;
  }
}
pair<long long, long long> get_hash(int l, int r) {
  l++;
  r++;
  long long t1 = hash_1[r] - (hash_1[l - 1] * p1[r - l + 1]) % MOD1;
  t1 %= MOD1;
  while (t1 < 0) t1 += MOD1;
  long long t2 = hash_2[r] - (hash_2[l - 1] * p2[r - l + 1]) % MOD2;
  t2 %= MOD2;
  while (t2 < 0) t2 += MOD2;
  pair<long long, long long> temp(t1, t2);
  return temp;
}
pair<long long, long long> get_key(string &s) {
  long long key1 = 0;
  long long key2 = 0;
  for (int i = 0; i < s.size(); i++) {
    key1 = (key1 * base + s[i]) % MOD1;
    key2 = (key2 * base + s[i]) % MOD2;
  }
  pair<long long, long long> temp(key1, key2);
  return temp;
}
int main() {
  int n, k;
  ios::sync_with_stdio(0);
  cin.tie(0);
  ;
  cin >> n >> k >> str;
  int len = n * k;
  for (int i = 0; i < len; i++) str[i + len] = str[i];
  str[len + len] = 0;
  init();
  int g;
  cin >> g;
  for (int i = 1; i <= g; i++) {
    string temp;
    cin >> temp;
    pair<long long, long long> key = get_key(temp);
    mp[key] = i;
  }
  bool flag = false;
  int sign;
  for (int i = 0; i < k; i++) {
    pair<long long, long long> key = get_hash(i, i + k - 1);
    sign = i;
    if (mp[key]) {
      vis.clear();
      bool f1 = true;
      for (int j = i; j < i + n * k - k + 1; j += k) {
        pair<long long, long long> temp = get_hash(j, j + k - 1);
        if (mp[temp] && vis[temp] == 0) {
          vis[temp] = 1;
          continue;
        } else {
          f1 = false;
          break;
        }
      }
      if (f1) {
        flag = true;
        break;
      }
    }
  }
  if (flag) {
    cout << "YES\n";
    for (int i = sign; i < sign + n * k - k + 1; i += k) {
      pair<long long, long long> temp = get_hash(i, i + k - 1);
      cout << mp[temp] << " ";
    }
    cout << endl;
  } else
    cout << "NO\n";
}
