#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
inline long long int rand(long long int x, long long int y) {
  ++y;
  return (rng() % (y - x)) + x;
}
long long int m, k, n, second, A[300006 + 200000], B[300006 + 200000];
map<long long int, long long int> mp;
multiset<long long int> ss;
void re(long long int x) { ss.erase(ss.find(x)); }
void add(long long int x) { ss.insert(x); }
pair<long long int, long long int> ans =
    pair<long long int, long long int>(-1, -1);
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cin >> m >> k >> n >> second;
  long long int can = m - ((n - 1) * k);
  if (can < k) {
    cout << "-1\n";
    return 0;
  }
  for (long long int i = 0; i < m; i++) {
    cin >> A[i];
  }
  for (long long int i = 0; i < second; i++) {
    long long int a;
    cin >> a;
    B[a]++;
  }
  for (long long int i = 1; i < 5e5 + 1; i++) {
    ss.insert(B[i]);
    mp[i] = B[i];
  }
  long long int e = 0;
  for (long long int i = 0; i < m; i++) {
    while (e <= i + can - 1 && e < m) {
      re(mp[A[e]]);
      mp[A[e]]--;
      add(mp[A[e]]);
      e++;
    }
    if ((*--ss.end()) <= 0 && e - i >= can && (i % k == 0))
      ans = pair<long long int, long long int>(i, e - 1);
    re(mp[A[i]]);
    mp[A[i]]++;
    add(mp[A[i]]);
  }
  if (ans.first == -1) {
    cout << "-1\n";
    return 0;
  }
  cout << (ans.second - ans.first + 1 - k) << "\n";
  k = (ans.second - ans.first + 1 - k);
  for (long long int i = 1; i < 5e5 + 1; i++) mp[i] = B[i];
  for (long long int i = ans.first; i <= ans.second; i++) {
    if (mp[A[i]] <= 0 && k) {
      cout << i + 1 << " ";
      k--;
    }
    mp[A[i]]--;
  }
}
