#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
using namespace std;
inline void fastio() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
}
const long long MAXN = 5e5 + 1;
long long goal[MAXN];
long long cnt[MAXN];
signed main() {
  fastio();
  long long m, k, n, s;
  cin >> m >> k >> n >> s;
  long long a[m];
  for (long long i = 0; i < m; i++) cin >> a[i];
  long long dissim = 0;
  for (long long i = 0; i < s; i++) {
    long long b_i;
    cin >> b_i;
    if (!goal[b_i]) dissim++;
    goal[b_i]++;
  }
  long long max_ans = m - n * k;
  long long left = 0;
  long long right = -1;
  while (left < m) {
    while (right < m - 1) {
      if (!dissim) break;
      right++;
      if (++cnt[a[right]] == goal[a[right]]) dissim--;
    }
    if (dissim) break;
    while (cnt[a[left]] > goal[a[left]]) {
      cnt[a[left]]--;
      left++;
    }
    if ((right + 1) / k == (left + 1) / k) {
      cout << "0\n";
      return 0;
    }
    long long len = right - left + 1;
    long long extra = max(0ll, len - k);
    long long ans = extra + (right + 1 - extra) % k;
    if (ans <= max_ans) {
      cout << ans << '\n';
      long long pos = left + 1;
      for (long long i = 0; i < (right + 1 - extra) % k; i++)
        cout << i + 1 << ' ';
      while (extra) {
        if (cnt[a[pos]] > goal[a[pos]]) {
          cnt[a[pos]]--;
          extra--;
          cout << pos + 1 << ' ';
        }
        pos++;
      }
      return 0;
    }
    cnt[a[left]]--;
    left++;
    dissim++;
  }
  cout << -1;
  return 0;
}
