#include <bits/stdc++.h>
const int N = 2 * 1e6 + 1;
using namespace std;
struct acm {
  int g[N][26], fail[N], end[N];
  int root, tot;
  void init() {
    tot = 0;
    root = newnode();
  }
  int newnode() {
    memset(g[tot], -1, sizeof(g[tot]));
    end[tot] = 0;
    return tot++;
  }
  void ins(string s, int id) {
    int now = root;
    for (int i = 0; s[i]; i++) {
      if (g[now][s[i] - 'a'] == -1) g[now][s[i] - 'a'] = newnode();
      now = g[now][s[i] - 'a'];
    }
    end[now] = id;
  }
  void build() {
    queue<int> q;
    fail[root] = root;
    for (int i = 0; i < 26; i++) {
      if (g[root][i] == -1) {
        g[root][i] = root;
      } else {
        fail[g[root][i]] = root;
        q.push(g[root][i]);
      }
    }
    while (!q.empty()) {
      int now = q.front();
      q.pop();
      for (int i = 0; i < 26; i++) {
        if (g[now][i] == -1)
          g[now][i] = g[fail[now]][i];
        else {
          fail[g[now][i]] = g[fail[now]][i];
          q.push(g[now][i]);
        }
      }
    }
  }
  void query(int n, int k, string s) {
    int a[n * k + k];
    int now = root;
    for (int i = 0; s[i]; i++) {
      now = g[now][s[i] - 'a'];
      a[i] = end[now];
    }
    for (int i = 0; i < k; i++) {
      now = g[now][s[i] - 'a'];
      a[n * k + i] = end[now];
    }
    for (int i = 0; i < k; i++) {
      bool good = true;
      vector<int> ans;
      for (int j = 0, l = k - 1 + i; j < n; l += k, j++) {
        if (a[l] == 0) {
          good = false;
          break;
        } else
          ans.push_back(a[l]);
      }
      if (good) {
        vector<int> t = ans;
        sort(ans.begin(), ans.end());
        ans.erase(unique(ans.begin(), ans.end()), ans.end());
        if (ans.size() == n) {
          cout << "YES\n";
          for (auto x : t) cout << x << " ";
          return;
        }
      }
    }
    cout << "NO\n";
    return;
  }
} ac;
int main() {
  int n, k;
  cin >> n >> k;
  string s, t;
  cin >> s;
  int m;
  cin >> m;
  ac.init();
  for (int i = 1; i <= m; i++) {
    cin >> t;
    ac.ins(t, i);
  }
  ac.build();
  ac.query(n, k, s);
}
