#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5;
int m, k, n, s, to[N];
int type[N], shd[N];
int rem[N], cnt;
int main() {
  scanf("%d%d%d%d", &m, &k, &n, &s);
  for (int i = 0; i < m; ++i) scanf("%d", type + i);
  for (int i = 0; i < s; ++i) {
    scanf("%d", shd + i);
    ++rem[shd[i]];
  }
  int i = 0, j = 0;
  memset(to, -1, sizeof to);
  cnt = s;
  while (i < m) {
    while (j < m && cnt) {
      --rem[type[j]];
      if (rem[type[j]] >= 0) --cnt;
      ++j;
    }
    if (cnt) break;
    to[i] = j;
    ++rem[type[i]];
    if (rem[type[i]] > 0) ++cnt;
    ++i;
  }
  int mn = 1e9, idx = -1;
  for (int i = 0; i < m; i += k) {
    if (to[i] == -1) continue;
    if (i / k > n - 1) continue;
    int c = i / k + (m - to[i]) / k + 1;
    if (c < n) continue;
    if (to[i] - i < mn) mn = to[i] - i, idx = i;
  }
  if (idx == -1) return cout << -1, 0;
  vector<int> v;
  memset(rem, 0, sizeof rem);
  for (int i = 0; i < s; ++i) ++rem[shd[i]];
  int c = 0;
  for (int j = idx; j < to[idx]; ++j) {
    if (rem[type[j]]) {
      --rem[type[j]];
      continue;
    }
    if (to[idx] - idx - c > k) {
      v.push_back(j + 1);
      ++c;
    }
  }
  printf("%d\n", v.size());
  for (int go : v) printf("%d ", go);
  return 0;
}
