#include <bits/stdc++.h>
using namespace std;
const long long N = 3e6 + 1, MOD = 1e9 + 7, mod = 998244353, INF = 3e18;
mt19937 Flash_new_51(51515);
using vi = vector<long long>;
using vp = vector<pair<long long, long long>>;
long long h[N], p = Flash_new_51() + 51, power[N], h2[N], power1[N],
                p1 = Flash_new_51() + 52;
vi ans[N];
set<long long> s2[N];
map<pair<long long, long long>, long long> mp;
long long flash(long long l, long long r) {
  return (h[r] - (h[l - 1] * power[r - l + 1]) % MOD + MOD) % MOD;
}
long long flash51(long long l, long long r) {
  return (h2[r] - (h2[l - 1] * power1[r - l + 1]) % MOD + MOD) % MOD;
}
signed main() {
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  long long n, k;
  string s;
  cin >> n >> k >> s;
  s += s;
  power[0] = power1[0] = 1;
  for (long long i = 1; i <= s.size(); i++) {
    h[i] = ((h[i - 1] * p) % MOD + s[i - 1]) % MOD;
    h2[i] = ((h2[i - 1] * p1) % MOD + s[i - 1]) % MOD;
    power[i] = (power[i - 1] * p) % MOD;
    power1[i] = (power1[i - 1] * p1) % MOD;
  }
  long long g;
  cin >> g;
  long long i1 = 0;
  while (g--) {
    string s1;
    cin >> s1;
    long long h1 = 0, h3 = 0;
    for (long long i = 1; i <= s1.size(); i++) {
      h1 = ((h1 * p) % MOD + s1[i - 1]) % MOD;
      h3 = ((h3 * p1) % MOD + s1[i - 1]) % MOD;
    }
    mp[{h1, h3}] = i1 + 1;
    i1++;
  }
  for (long long i = 1; i <= n * k; i++) {
    long long st = flash(i, i + k - 1), st1 = flash51(i, i + k - 1);
    if (mp[{st, st1}] > 0)
      s2[i % k].insert(mp[{st, st1}]), ans[i % k].push_back(mp[{st, st1}]);
  }
  for (long long i = 0; i < k; i++) {
    if (s2[i].size() == n) {
      cout << "YES\n";
      for (auto to : ans[i]) cout << to << ' ';
      return 0;
    }
  }
  cout << "NO";
}
