#include <bits/stdc++.h>
using i64 = long long;
int main() {
  int m, k, n, s;
  scanf("%d%d%d%d", &m, &k, &n, &s);
  int p = m - n * k;
  std::vector<i64> a(m);
  for (int i = 0; i < m; i++) {
    scanf("%lld", &a[i]);
  }
  std::map<int, int> sch;
  std::vector<bool> use(500010);
  for (int i = 0; i < s; i++) {
    int b;
    scanf("%d", &b);
    sch[b]++;
    use[b] = true;
  }
  std::map<int, int> cnt;
  int l = 0, r = 0, j = 0;
  while (r < m) {
    while (r < m && j < sch.size()) {
      if (use[a[r]]) {
        cnt[a[r]]++;
        if (cnt[a[r]] == sch[a[r]]) j++;
      }
      r++;
    }
    while (l < r && j == sch.size()) {
      if (use[a[l]]) {
        if (cnt[a[l]] == sch[a[l]]) break;
        cnt[a[l]]--;
      }
      l++;
    }
    if (j == sch.size()) {
      int c = std::max(0, l % k - std::max(0, k - (r - l))),
          d = std::max(0, r - l - k);
      if (c + d == 0) {
        printf("0\n\n");
        return 0;
      } else if (c + d <= p) {
        printf("%d\n", c + d);
        for (int i = 0; i < c; i++) printf("%d ", i + 1);
        for (int i = 0; i < d; l++) {
          if (!use[a[l]] || cnt[a[l]] > sch[a[l]]) {
            i++;
            if (use[a[l]]) cnt[a[l]]--;
            printf("%d ", l + 1);
          }
        }
        printf("\n");
        return 0;
      }
    }
    j--;
    cnt[a[l]]--;
    l++;
  }
  printf("-1\n");
  return 0;
}
