#include <bits/stdc++.h>
using namespace std;
int a[500003];
int bsum[500003];
int cnt[500003];
int rg[500003];
int main() {
  int m, k, n, s;
  cin >> m >> k >> n >> s;
  for (int i = 0; i < m; i++) cin >> a[i];
  vector<int> b(s);
  for (int i = 0; i < s; i++) cin >> b[i];
  for (int i = 0; i < s; i++) bsum[b[i]]++;
  int sb = 0, curb = 0;
  for (int i = 0; i <= 500000; i++) sb += bsum[i] > 0;
  for (int i = 0; i <= 500001; i++) rg[i] = 1e9;
  int l = 0, r = 0;
  while (r < m) {
    while (r < m && curb < sb) {
      cnt[a[r]]++;
      if (cnt[a[r]] == bsum[a[r]]) curb++;
      r++;
    }
    while (l < r && curb >= sb) {
      rg[l] = r;
      if (cnt[a[l]] == bsum[a[l]]) curb--;
      cnt[a[l]]--;
      l++;
    }
  }
  for (int i = 0; i < m; i++) {
    if (i % k + rg[i] - i > k) continue;
    cout << 0 << endl;
    return 0;
  }
  vector<int> ans;
  map<int, int> cntap;
  for (int i = m - 1; i >= 0; i--) {
    if (rg[i] == rg[i + 1]) continue;
    int posi = i, posrg = rg[i];
    for (int j = rg[i] - 1; j >= 0; j--) {
      cntap[a[j]]++;
      if (cntap[a[j]] > bsum[a[j]]) {
        ans.push_back(j + 1);
        if (j < i) posi--;
        posrg--;
      }
      if (posi / k == (posrg - 1) / k || ans.size() > m - n * k) break;
    }
    if (ans.size() > m - n * k) {
      ans.clear();
      cntap.clear();
      continue;
    }
    break;
  }
  if (ans.empty())
    cout << -1 << endl;
  else {
    cout << ans.size() << endl;
    for (int i = 0; i < (int)ans.size(); i++)
      cout << ans[i] << " \n"[i + 1 == ans.size()];
  }
  return 0;
}
