#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5 + 5;
int a[maxn], b[maxn], c[maxn], vis[maxn];
multiset<int> ss;
int main() {
  int m, k, n, s;
  scanf("%d%d%d%d", &m, &k, &n, &s);
  for (int i = 1; i <= m; i++) {
    scanf("%d", &a[i]);
  }
  for (int i = 1; i <= s; i++) {
    int x;
    scanf("%d", &x);
    ss.insert(x);
    b[x]++;
  }
  int p = 0, mn = 1e9, ans;
  for (int i = 1; i <= m; i++) {
    while (p < m && ss.size()) {
      c[a[++p]]++;
      if (b[a[p]] && b[a[p]] >= c[a[p]]) {
        auto it = ss.lower_bound(a[p]);
        ss.erase(it);
      }
    }
    if (!ss.size()) {
      int tmp = p - i + 1 - k + (i - 1) % k;
      if (tmp <= m - n * k) {
        mn = i - (i - 1) % k;
        ans = p;
      }
    }
    c[a[i]]--;
    if (c[a[i]] < b[a[i]]) ss.insert(a[i]);
  }
  if (mn == 1e9) {
    printf("-1\n");
    return 0;
  }
  vector<int> res;
  int cnt = 0;
  for (int i = mn; i <= ans; i++) {
    if (b[a[i]]) {
      vis[i] = 1;
      b[a[i]]--;
      cnt++;
    }
  }
  for (int i = mn; i <= ans; i++) {
    if (!vis[i]) res.push_back(i);
  }
  if (res.size() <= k - cnt) {
    printf("0\n");
    return 0;
  }
  printf("%d\n", res.size() - (k - cnt));
  for (int i = 0; i < (int)res.size() - (k - cnt); i++) printf("%d ", res[i]);
  printf("\n");
  return 0;
}
