#include <bits/stdc++.h>
using namespace std;
const int MAXN = 500010;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
int m, k, n, s, p;
int a[MAXN], b[MAXN];
int cnt[MAXN], num[MAXN];
vector<int> ans;
bool solve() {
  for (int l = 1, r = 0, block = 1; block <= n; block++) {
    while (p < s) {
      if (++r > m) return false;
      if (++num[a[r]] == cnt[a[r]]) p++;
    }
    while (r - l + 1 > k) {
      if (num[a[l]] - 1 < cnt[a[l]]) break;
      num[a[l]]--;
      l++;
    }
    int cut = l - (block - 1) * k - 1;
    cut += r - l + 1 > k ? r - l + 1 - k : 0;
    if (cut <= m - n * k) {
      for (int i = (block - 1) * k + 1; i < l; i++) ans.push_back(i);
      if (r - l + 1 > k) {
        for (int i = l, j = 0; i <= r && j < r - l + 1 - k; i++)
          if (num[a[i]] - 1 >= cnt[a[i]]) {
            num[a[i]]--;
            ans.push_back(i);
            j++;
          }
      }
      return true;
    }
    while (l <= block * k) {
      if (--num[a[l]] < cnt[a[l]]) p--;
      l++;
    }
  }
  return false;
}
int main() {
  m = read();
  k = read();
  n = read();
  s = read();
  for (int i = 1; i <= m; i++) a[i] = read();
  for (int i = 1; i <= s; i++) cnt[b[i] = read()]++;
  sort(b + 1, b + s + 1);
  s = unique(b + 1, b + s + 1) - b - 1;
  if (solve()) {
    cout << ((int)ans.size()) << '\n';
    for (auto &o : ans) cout << o << ' ';
  } else
    cout << -1;
  return 0;
}
