#include <bits/stdc++.h>
using namespace std;
long long const N = 5e5 + 10;
long long const MOD = 1e9 + 7;
long long m, k, n, s;
long long fl[N];
map<long long, long long> smap, kmap, pmap;
set<long long> sset;
bool fun(long long a, long long b) {
  long long len = b - a + 1;
  long long li = 0, ri = 0;
  li = max(li, (a - 1) / k);
  ri = (m - b) / k;
  long long tot = 1 + li + ri;
  if (tot >= n) {
    return true;
  }
  return false;
}
int32_t main() {
  cin >> m >> k >> n >> s;
  for (long long i = 1; i <= m; i++) {
    cin >> fl[i];
  }
  for (long long i = 1; i <= s; i++) {
    long long a;
    cin >> a;
    smap[a]++;
  }
  long long sum = 0;
  for (long long i = 1; i <= m; i++) {
    long long temp = fl[i];
    if (smap.count(temp)) {
      pmap[i] = 1;
      kmap[temp]++;
      if (kmap[temp] <= smap[temp]) sum++;
    }
    if (sum == s) {
      long long a = pmap.begin()->first;
      while (pmap.size() > 0) {
        a = pmap.begin()->first;
        long long type = fl[a];
        if (kmap[type] > smap[type]) {
          pmap.erase(pmap.begin());
          kmap[type]--;
        } else {
          break;
        }
      }
      if (fun(a, i)) {
        long long ex = i - a + 1;
        if (ex < k) a = max(1LL, a - k + ex);
        long long del = (a - 1) % k;
        for (long long j = 1; j <= del; j++) {
          sset.insert(j);
        }
        if (ex > k) {
          ex -= k;
          for (long long j = a; j <= i; j++) {
            if (ex > 0) {
              if (kmap[fl[j]] == 0) {
                sset.insert(j);
                ex--;
              } else if (kmap[fl[j]] > smap[fl[j]]) {
                sset.insert(j);
                kmap[fl[j]]--;
                ex--;
              }
            }
          }
        }
        cout << sset.size() << endl;
        for (auto c : sset) cout << c << " ";
        return 0;
      }
    }
  }
  cout << -1 << endl;
}
