#include <bits/stdc++.h>
using namespace std;
vector<int> mat[500010];
int m, k, n, s, ara[500010], cnt[500010], pos[500010], on[500010], moa,
    nex[500010];
int main() {
  ios::sync_with_stdio(false);
  int chao = 1, v;
  scanf("%d", &m);
  scanf("%d", &k);
  scanf("%d", &n);
  scanf("%d", &s);
  for (int i = 0; i <= m - 1; i++) {
    scanf("%d", &ara[i]);
    mat[ara[i]].push_back(i);
  }
  for (int i = 0; i <= s - 1; i++) {
    scanf("%d", &v);
    cnt[v]++;
  }
  for (int i = 0; i <= 500010 - 1; i++) {
    if (cnt[i]) {
      if (cnt[i] > mat[i].size()) chao = 0;
      if (!chao) break;
      for (int tt = 1; tt <= cnt[i]; tt++) {
        int p = mat[i][pos[i]];
        on[p] = 1;
        moa = max(moa, p);
        pos[i]++;
      }
    }
  }
  memset(nex, -1, sizeof(nex));
  for (int i = 0; i <= m - 1; i++) {
    if (!chao) break;
    int x = i % k;
    int y = ((moa - i) + 1) - k;
    y = max(y, 0);
    int c = (m - x - y) / k;
    if (c >= n) {
      cout << x + y << endl;
      for (int i = 0; i <= x - 1; i++) cout << i + 1 << ' ';
      while (y) {
        if (!on[i]) cout << i + 1 << ' ';
        if (!on[i]) y--;
        i++;
      }
      return 0;
    }
    nex[i] = moa;
    if (on[i]) {
      int v = ara[i];
      if (pos[v] == mat[v].size())
        chao = 0;
      else {
        moa = max(moa, mat[v][pos[v]]);
        on[mat[v][pos[v]]] = 1;
        pos[v]++;
      }
    }
  }
  cout << -1 << endl;
  return 0;
}
