#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int m, k, n, s;
  cin >> m >> k >> n >> s;
  vector<int> a(m);
  for (auto& x : a) cin >> x;
  vector<int> b(s);
  for (auto& x : b) cin >> x;
  vector<int> nxt(m, -1);
  vector<int> l(500001, -1);
  for (int i = m - 1; i >= 0; --i) {
    nxt[i] = l[a[i]];
    l[a[i]] = i;
  }
  int last = -1;
  vector<bool> chosen(m, false);
  for (int i = 0; i < s; ++i)
    if (l[b[i]] != -1) {
      chosen[l[b[i]]] = true;
      last = max(last, l[b[i]]);
      l[b[i]] = nxt[l[b[i]]];
    } else {
      cout << -1 << endl;
      return 0;
    }
  for (int i = 0; i < m; ++i) {
    if (!chosen[i]) continue;
    int first = i;
    int del = max(0, last - first + 1 - k);
    int bef = 0;
    if ((last - del) / k != first / k) {
      bef = (last - del) % k + 1;
    }
    if (m - del - bef >= n * k && last + 1 - s >= del + bef) {
      cout << del + bef << endl;
      for (int j = 0; j < first; ++j)
        if (bef > 0) {
          cout << j + 1 << " ";
          --bef;
        }
      for (int j = i; j <= last; ++j)
        if (!chosen[j] && (bef > 0 || del > 0)) {
          if (bef > 0) {
            cout << j + 1 << " ";
            --bef;
          } else if (del > 0) {
            cout << j + 1 << " ";
            --del;
          }
        }
      cout << endl;
      return 0;
    }
    chosen[i] = false;
    if (l[a[i]] != -1) {
      chosen[l[a[i]]] = true;
      last = max(last, l[a[i]]);
      l[a[i]] = nxt[l[a[i]]];
    } else {
      cout << -1 << endl;
      return 0;
    }
  }
  cout << -1 << endl;
  return 0;
}
