#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int ans = 0;
  char ch = getchar();
  while (!isdigit(ch)) ch = getchar();
  while (isdigit(ch)) ans = (ans << 3) + (ans << 1) + (ch ^ 48), ch = getchar();
  return ans;
}
const int N = 5e5 + 5;
int cnt[N], tot[N], lim[N], a[N], okcnt = 0, m, n, k, s, det = 0;
bool in[N];
inline void check(int l, int r) {
  int blo = l == l / k * k ? (l / k - 1) * k + 1 : l / k * k + 1;
  if (r - blo + 1 - k > (n - m * k)) return;
  if (r - blo + 1 - k <= 0) puts("0"), exit(0);
  cout << r - blo + 1 - k << '\n';
  for (register int i = blo, j = 1; i <= r && j <= r - blo + 1 - k; ++i) {
    if (lim[a[i]] && tot[a[i]] < lim[a[i]]) {
      ++tot[a[i]];
      continue;
    }
    cout << i << ' ', ++j;
  }
  exit(0);
}
int main() {
  n = read(), k = read(), m = read(), s = read();
  for (register int i = 1; i <= n; ++i) a[i] = read();
  for (register int i = 1, v; i <= s; ++i) {
    ++lim[v = read()];
    if (lim[v] > 1) ++det;
  }
  for (register int l = 1, r = 0;;) {
    while (r < n && okcnt != s - det) {
      ++r, ++cnt[a[r]];
      if (cnt[a[r]] == lim[a[r]]) ++okcnt;
      if (cnt[a[r]] <= lim[a[r]]) in[r] = 1;
    }
    if (okcnt != s - det) break;
    while (okcnt == s - det) {
      if (cnt[a[l]] == lim[a[l]]) check(l, r), --okcnt;
      if (cnt[a[l]] <= lim[a[l]]) in[l] = 0;
      --cnt[a[l]];
      ++l;
    }
  }
  puts("-1");
  return 0;
}
