#include <bits/stdc++.h>
using namespace std;
template <typename T>
void trace(T a) {
  cout << a << "\n";
}
template <typename T, typename... Args>
void trace(T a, Args... args) {
  cout << a << " ";
  trace(args...);
}
int recNum = 0;
void prTabs() {
  for (int i = 0; i < recNum; i++) cout << "    ";
}
template <typename... Args>
void recInit(Args... args) {
  prTabs();
  trace("rec(", args..., ")");
  recNum++;
}
template <typename T>
void recEnd(T a) {
  prTabs();
  trace("->", a);
  recNum--;
}
int n, m, a, b, c;
map<int, int> s;
map<int, int> sa;
int li[500001];
int freq[2][2000002];
int k;
int main() {
  memset(freq, 0, sizeof freq);
  scanf("%d %d %d %d", &m, &k, &n, &b);
  for (int i = 1; i <= m; i++) {
    scanf("%d", li + i);
  }
  for (int i = 0; i < b; i++) {
    scanf("%d", &a);
    if (s.count(a)) {
      s[a]++;
    } else {
      s[a] = 1;
    }
  }
  int il = 0, ir = 0;
  for (int i = 0; i < n; i++) {
    int dacerto = true;
    while (ir < m - ((n - 1 - i) * k)) {
      freq[1][li[++ir]]++;
    }
    while (il < k * i) {
      freq[0][li[++il]]++;
    }
    for (map<int, int>::iterator it = s.begin(); it != s.end(); it++) {
      if (freq[1][it->first] - freq[0][it->first] < it->second) {
        dacerto = false;
        break;
      }
    }
    if (!dacerto) continue;
    printf("%d\n", m - (n * k));
    int falta = k - b;
    for (int j = k * i + 1; j <= m - ((n - 1 - i) * k); j++) {
      if (sa[li[j]] < s[li[j]]) {
        sa[li[j]]++;
      } else if (falta) {
        sa[li[j]]++;
        falta--;
      } else {
        printf("%d ", j);
      }
    }
    printf("\n");
    return 0;
  }
  printf("-1\n");
  return 0;
}
