#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
template <class T>
bool ckmin(T &a, T b) {
  return a > b ? a = b, true : false;
}
template <class T>
bool ckmax(T &a, T b) {
  return a < b ? a = b, true : false;
}
const int N = 5e5 + 500;
const int mod = 1e9 + 7;
const int INF = INT_MAX >> 1;
const ll LINF = LLONG_MAX >> 1;
const ld eps = 1e-9;
void ex() {
  cout << -1;
  exit(0);
}
vector<int> a[N];
int id[N];
int v[N];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout << fixed << setprecision(20);
  fill(id, id + N, -1);
  int m, k, n, s;
  cin >> m >> k >> n >> s;
  for (int i = 1; i <= m; i++) {
    int x;
    cin >> x;
    a[x].emplace_back(i);
    v[i] = x;
  }
  vector<int> b(s);
  for (auto &e : b) cin >> e;
  sort(b.begin(), b.end());
  int r = 0;
  for (auto e : b) {
    if (++id[e] == (int)a[e].size()) ex();
    ckmax(r, a[e][id[e]]);
  }
  b.erase(unique(b.begin(), b.end()), b.end());
  for (int l = 1; l <= m; l++) {
    int del = (l - 1) % k;
    del += max(0, r - l + 1 - k);
    if (del <= m - n * k) {
      cout << del << endl;
      for (int i = 1; i <= (l - 1) % k; i++) cout << i << ' ';
      del -= (l - 1) % k;
      for (int i = l, cnt = 0; cnt < del; i++) {
        if (id[v[i]] == -1 || i > a[v[i]][id[v[i]]]) cout << i << ' ', cnt++;
      }
      return 0;
    }
    int x = v[l];
    if (id[x] >= 0) {
      if (++id[x] == (int)a[x].size()) break;
      ckmax(r, a[x][id[x]]);
    }
  }
  cout << -1;
  return 0;
}
