#include <bits/stdc++.h>
using namespace std;
int tipo[520000], cant[520000], ped[520000];
vector<int> tipos[520000];
int gsum(int riz, int rder, int cual) {
  int iz1, der1, mid;
  iz1 = 0, der1 = tipos[cual].size();
  while (iz1 + 1 < der1) {
    mid = (iz1 + der1) / 2;
    if (tipos[cual][mid] >= riz)
      der1 = mid;
    else
      iz1 = mid;
  }
  int iz2, der2;
  iz2 = 0;
  der2 = tipos[cual].size();
  while (iz2 + 1 < der2) {
    mid = (iz2 + der2) / 2;
    if (tipos[cual][mid] <= rder)
      iz2 = mid;
    else
      der2 = mid;
  }
  return iz2 - der1 + 1;
}
int main() {
  for (int i = 0; i < 520000; ++i) tipos[i].push_back(0);
  int m, k, n, second;
  cin >> m >> k >> n >> second;
  for (int i = 1; i <= m; ++i) {
    cin >> tipo[i];
    tipos[tipo[i]].push_back(i);
  }
  for (int i = 0; i < 520000; ++i) tipos[i].push_back(m + 1);
  memset(cant, 0, sizeof cant);
  multiset<int> pedidos;
  for (int i = 1; i <= second; ++i) {
    cin >> ped[i];
    cant[ped[i]]++;
    pedidos.insert(ped[i]);
  }
  int sobra = (m - (n * k)), iz, der, sum;
  for (int i = 0; i < n; ++i) {
    iz = k * i + 1;
    der = k * (i + 1) + sobra;
    bool first = true;
    for (int j = 1; j <= second; j++) {
      sum = gsum(iz, der, ped[j]);
      if (sum < cant[ped[j]]) first = false;
    }
    if (first == true) {
      queue<int> cola;
      for (int j = iz; j <= der; j++) {
        if (pedidos.find(tipo[j]) != pedidos.end())
          pedidos.erase(pedidos.find(tipo[j]));
        else if (cola.size() < sobra)
          cola.push(j);
      }
      cout << cola.size() << endl;
      while (!cola.empty()) {
        cout << cola.front() << " ";
        cola.pop();
      }
      return 0;
    }
  }
  cout << -1 << endl;
}
