#include <bits/stdc++.h>
using namespace std;
int main() {
  unordered_map<string, int> m;
  set<int> nums;
  vector<int> ans;
  bool flag = true;
  int n, k, g;
  string s;
  cin >> n >> k >> s >> g;
  ans.resize(n);
  s += s;
  for (int i(0); i < g; i++) {
    string a;
    cin >> a;
    m.insert({a, i});
  }
  int tot_len = n * k;
  for (int j(tot_len - k); j < tot_len; j++) {
    flag = true;
    for (int i(0); i < n; i++) {
      auto it = m.find(s.substr(j + i * k, k));
      if (it == m.end() || nums.find(it->second) != nums.end()) {
        flag = false;
        break;
      }
      ans[i] = it->second;
      nums.insert(it->second);
    }
    if (flag) {
      break;
    }
    nums.clear();
  }
  if (flag) {
    cout << "YES\n";
    for (int i(0); i < n; i++) {
      cout << ans[i] + 1 << ' ';
    }
  } else {
    cout << "NO";
  }
  return 0;
}
