#include <bits/stdc++.h>
using namespace std;
inline int read() {
  char c;
  int a = 0, d = 1;
  while (c = getchar(), c < '0' || c > '9')
    if (c == '-') d = -1;
  a = a * 10 + c - '0';
  while (c = getchar(), c <= '9' && c >= '0') a = a * 10 + c - '0';
  return a * d;
}
const int M = 500050;
int n, a[M], b[M], k, s, m, vis[M], vis1[M], cnt1, need[M], sta[M], top;
int main() {
  m = read();
  k = read();
  n = read();
  s = read();
  if (n * k > m || k < s) {
    puts("-1");
    return 0;
  }
  for (int i = 1; i <= m; i++) {
    a[i] = read();
  }
  for (int i = 1; i <= s; i++) {
    b[i] = read();
    if (!vis1[b[i]]) cnt1++;
    vis1[b[i]] = 1;
    need[b[i]]++;
  }
  int res = m - n * k;
  int l = 1, r = 0, num = 0;
  while (r <= m) {
    while (num < cnt1 && r < m) {
      if (vis[a[r + 1]] == need[a[r + 1]] - 1) num++;
      vis[a[r + 1]]++;
      r++;
    }
    if (r == m && num < cnt1) break;
    while (num >= cnt1 && l <= r - k + 1) {
      if (vis[a[l]] == need[a[l]]) num--;
      vis[a[l]]--;
      l++;
    }
    l--;
    int nowr = (l - 1) / k * k + k;
    if (r - res <= nowr) {
      for (int i = ((l - 1) / k) * k + 1; i < l; i++) {
        if (res <= 0) break;
        sta[++top] = i;
        res--;
      }
      for (int i = l + 1; i <= r - 1; i++) {
        if (res <= 0) break;
        if (vis[a[i]] > need[a[i]]) {
          sta[++top] = i;
          res--;
          vis[a[i]]--;
        }
      }
      printf("%d\n", top);
      for (int i = 1; i <= top; i++) {
        printf("%d ", sta[i]);
      }
      return 0;
    }
    if (r == m) break;
    l++;
  }
  puts("-1");
}
