#include <bits/stdc++.h>
using namespace std;
int m, n, k, s;
const int maxn = 5e5 + 5;
int a[maxn], b[maxn];
int cnt[maxn] = {0};
int cb[maxn] = {0};
bool judge() {
  for (int i = 1; i <= s; i++) {
    if (cnt[b[i]] < cb[b[i]]) return false;
  }
  return true;
}
int cntt[maxn];
bool f[maxn] = {0};
int main() {
  int S = 0;
  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++) {
    scanf("%d", b + i);
    S += (cb[b[i]] == 0);
    cb[b[i]]++;
  }
  int must = n * k, num = S;
  bool flag = false;
  int l = 1, r = 0;
  for (; l <= m && !flag; l++) {
    while (r + 1 <= m && num) {
      cnt[a[++r]]++;
      if (!f[a[r]] && cnt[a[r]] >= cb[a[r]] && cb[a[r]] != 0) {
        num--;
        f[a[r]] = 1;
      }
    }
    if (num) {
      break;
    }
    if (m - (l - 1) % k - max(0, r - l + 1 - k) >= must) {
      flag = 1;
      break;
    }
    cnt[a[l]]--;
    if (f[a[l]] == 1 && cnt[a[l]] < cb[a[l]] && cb[a[l]] != 0) {
      f[a[l]] = 0;
      num++;
    }
  }
  if (flag) {
    vector<int> ans;
    if (r - l + 1 > k) {
      for (int i = l; i <= r; i++) cntt[a[i]]++;
      int tmp = r - l + 1 - k;
      for (int i = l; i <= r && tmp; i++) {
        if (cntt[a[i]] > cb[a[i]]) {
          ans.push_back(i);
          cntt[a[i]]--;
          tmp--;
        }
      }
    }
    for (int i = (l - 1) / k * k + 1; i <= l - 1; i++) ans.push_back(i);
    printf("%d\n", ans.size());
    for (int v : ans) printf("%d ", v);
  } else
    puts("-1");
  return 0;
}
