#include <bits/stdc++.h>
using namespace std;
const int N = 500005;
template <class T1, class T2>
ostream &operator<<(ostream &os, const pair<T1, T2> &a) {
  return os << '(' << a.first << ", " << a.second << ')';
}
template <class T>
ostream &operator<<(ostream &os, const vector<T> &a) {
  os << '[';
  for (unsigned int i = 0; i < a.size(); i++)
    os << a[i] << (i < a.size() - 1 ? ", " : "");
  os << ']';
  return os;
}
int read() {
  int x;
  cin >> x;
  return x;
}
int m, k, n, s;
int a[N];
int need[N], cur[N];
int fulfil = 0;
void change(int X, int dir) {
  fulfil -= (cur[X] >= need[X]);
  cur[X] += dir;
  fulfil += (cur[X] >= need[X]);
}
int tmp[N];
vector<int> order;
void endSol(int L, int R, int maxR) {
  for (int lll = (L), rrr = (R), i = lll; i <= rrr; i++) {
    if (tmp[a[i]] == need[a[i]] && R > maxR) {
      order.push_back(i);
      R--;
    } else
      tmp[a[i]]++;
  }
  for (int lll = (1), rrr = (L - 1), i = lll; i <= rrr; i++) {
    if (R > maxR) {
      order.push_back(i);
      R--;
    }
  }
  cout << order.size() << '\n';
  for (auto it : order) cout << it << ' ';
  cout << '\n';
  exit(0);
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> m >> k >> n >> s;
  for (int lll = (1), rrr = (m), i = lll; i <= rrr; i++) cin >> a[i];
  for (int lll = (1), rrr = (s), i = lll; i <= rrr; i++) need[read()]++;
  for (int lll = (1), rrr = (N - 5), i = lll; i <= rrr; i++)
    if (cur[i] >= need[i]) fulfil++;
  int iter = 1;
  for (int lll = (1), rrr = (m), i = lll; i <= rrr; i++) {
    change(a[i], 1);
    while (true) {
      change(a[iter], -1);
      if (fulfil == N - 5)
        iter++;
      else {
        change(a[iter], +1);
        break;
      }
    }
    if (fulfil == N - 5) {
      int maxR = min(n * k, (iter + k - 1) / k * k);
      while (maxR > m) maxR -= k;
      int curR = i;
      int needDel = max(0, curR - maxR);
      if (m - needDel >= n * k) endSol(iter, curR, maxR);
    }
  }
  cout << -1 << '\n';
}
