#include <bits/stdc++.h>
using namespace std;
map<int, bool> mp;
int a[((int)5e5 + 10)], b[((int)5e5 + 10)], c[((int)5e5 + 10)],
    ans[((int)5e5 + 10)];
int main() {
  int n, k, m, s;
  cin >> n >> k >> m >> s;
  int len = k + n - k * m;
  int del = n - k * m;
  int flag = 0;
  int ans_loc = 1;
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  int type = 0;
  for (int i = 1; i <= s; i++) {
    int t;
    cin >> t;
    if (!b[t]) type++;
    ++b[t];
    ++c[t];
    mp[t] = 1;
  }
  for (int i = 1; i <= len; i++) {
    int t = a[i];
    if (mp[t]) b[t]--;
    if (b[t] == 0 && mp[t]) type--;
    if (type == 0) {
      ans_loc = 1;
      flag = 1;
      goto stop;
    }
  }
  for (int i = len + 1; i <= n; i++) {
    ans_loc++;
    int l = a[ans_loc - 1];
    int r = a[i];
    if (mp[l]) {
      b[l]++;
      if (b[l] == 1) type++;
    }
    if (mp[r]) {
      b[r]--;
      if (b[r] == 0) type--;
    }
    if (type == 0 && (ans_loc - 1) % k == 0) {
      flag = 1;
      goto stop;
    }
  }
stop : {};
  int pp = 0;
  if (flag) {
    for (int i = ans_loc; i < len + ans_loc; i++) {
      int t = a[i];
      if (c[t] > 0) {
        c[t]--;
        continue;
      }
      if (pp == del) break;
      ans[++pp] = i;
    }
    cout << pp << '\n';
    for (int i = 1; i <= pp; i++) {
      printf("%d%c", ans[i], i == pp ? '\n' : ' ');
    }
  } else
    puts("-1");
  return 0;
}
