#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const int MN = 500500;
int v[MN], st[MN];
int sat;
bitset<MN> bs;
int m, k, n, s;
int main() {
  memset(v, 0, sizeof(v));
  memset(st, 0, sizeof(st));
  ios::sync_with_stdio(0);
  sat = 0;
  scanf("%d %d %d %d ", &m, &k, &n, &s);
  for (int i = 0; i < m; i++) {
    int t;
    scanf("%d ", &t);
    v[i] = t;
  }
  for (int i = 0; i < s; i++) {
    int t;
    scanf("%d ", &t);
    st[t]++;
  }
  for (int i = 0; i < MN; i++) {
    if (st[i] == 0) {
      bs.set(i);
      sat++;
    }
  }
  int sr = 0, ed = 0;
  int rl[MN];
  vector<int> res;
  bool po = true;
  memset(rl, 0, sizeof(rl));
  int mi = -1, ms = 1e9, me = 1e9;
  while (sr < m) {
    while (ed < m && sat < MN) {
      rl[v[ed]]++;
      if ((rl[v[ed]] >= st[v[ed]]) && !bs[v[ed]]) {
        sat++;
        bs.set(v[ed]);
      }
      ed++;
    }
    bool fo = false;
    while (sat == MN && sr < ed) {
      fo = true;
      int li = min((sr / k) * k, n * k);
      if (ed - li < (me - mi)) {
        mi = li;
        ms = sr;
        me = ed;
      }
      rl[v[sr]]--;
      if ((rl[v[sr]] < st[v[sr]]) && bs[v[sr]]) {
        sat--;
        bs.reset(v[sr]);
      }
      sr++;
    }
    if (!fo) break;
  }
  if (mi == -1) {
    printf("-1\n");
    return 0;
  }
  if (me - mi - k > (m - n * k)) {
    printf("-1\n");
    return 0;
  }
  printf("%d\n", max(me - mi - k, 0));
  bool fs = true;
  bs.reset();
  for (int i = 0; i < MN; i++) {
    if (st[i] == 0) {
      bs.set(i);
      sat++;
    }
  }
  memset(rl, 0, sizeof(rl));
  int ctr = 0;
  for (int i = mi; i < me; i++) {
    if (ctr >= max(me - mi - k, 0)) {
      break;
    }
    if (bs[v[i]]) {
      if (!fs) {
        printf(" ");
      }
      printf("%d", i + 1);
      fs = false;
      ctr++;
    }
    rl[v[i]]++;
    if ((rl[v[i]] >= st[v[i]]) && !bs[v[i]]) {
      sat++;
      bs.set(v[i]);
    }
  }
  printf("\n");
}
