#include <bits/stdc++.h>
using namespace std;
using lint = long long;
using ulint = unsigned long long;
const int N = 5e5 + 1;
int m, k, n, s;
bool need[N];
int flowers[N];
map<int, int> seq;
void solve(int start, int len) {
  vector<int> rem;
  map<int, int> cnt;
  for (int i = start; i < start + len; i++) {
    if (need[flowers[i]]) {
      if (++cnt[flowers[i]] <= seq[flowers[i]]) {
        continue;
      }
    }
    rem.push_back(i);
  }
  int ans = len - k;
  cout << ans << "\n";
  for (int i = 0; i < ans; i++) {
    cout << (rem[i] + 1) << " ";
  }
  cout << endl;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> m >> k >> n >> s;
  for (int i = 0; i < m; i++) {
    cin >> flowers[i];
  }
  for (int i = 0; i < s; i++) {
    int x;
    cin >> x;
    seq[x]++;
    need[x] = true;
  }
  int extra = m - n * k;
  int total = seq.size();
  int curr = 0;
  map<int, int> curr_flowers;
  for (int i = 0; i < m; i++) {
    if (need[flowers[i]] && ++curr_flowers[flowers[i]] == seq[flowers[i]]) {
      curr++;
    }
    if (i >= k + extra) {
      int j = i - k - extra;
      if (need[flowers[j]] && curr_flowers[flowers[j]]-- == seq[flowers[j]]) {
        curr--;
      }
    }
    if (curr == total && i - k - extra + 1 >= 0) {
      int left = (i >= k + extra ? i - k - extra + 1 : 0) / k;
      int right = (m - i - 1) / k;
      if (left + right >= n - 1) {
        solve(i - k - extra + 1, k + extra);
        return 0;
      }
    }
  }
  cout << -1 << endl;
}
