#include <bits/stdc++.h>
using namespace std;
int n, m, k, s;
int V[500005], S[500005], F[500005], A[500005];
vector<int> P[500005];
set<int> L;
bool Out[500005];
int main() {
  ios_base::sync_with_stdio(false);
  cin >> m >> k >> n >> s;
  int ok = 1;
  for (int i = 1; i <= m; i++) {
    cin >> V[i];
    P[V[i]].push_back(i);
  }
  for (int i = 1; i <= 500005; i++) S[i] = -1, F[i] = -1;
  for (int i = 1; i <= s; i++) {
    cin >> A[i];
    if (P[A[i]].empty()) ok = 0;
    S[A[i]] = 0;
    F[A[i]]++;
    if (P[A[i]].size() <= F[A[i]]) ok = 0;
    L.insert(A[i]);
  }
  if (k == 1) {
    for (int i = 1; i <= m; i++)
      if (V[i] == A[1]) {
        cout << 0;
        return 0;
      }
    ok = 0;
  }
  if (!ok) {
    cout << -1;
    return 0;
  }
  int last = 0;
  for (auto i : L) {
    for (int j = S[i]; j <= F[i]; j++) {
      Out[P[i][j]] = 1;
      last = max(last, P[i][j]);
    }
  }
  set<int> Sol;
  set<int> Ans;
  int pos = 0, extra = 0;
  for (int i = 1; i <= k - s + extra; i++)
    if (Out[i])
      extra++;
    else
      Out[i] = 1;
  for (int i = 1; i <= last; i++)
    if (Out[i] == 0) Ans.insert(i);
  if ((m - Ans.size()) / k >= n) {
    if (Ans.size() == 0) pos = 1;
    Sol = Ans;
  }
  memset(Out, 0, sizeof(Out));
  for (int i = 1 + k; i + k - 1 <= m && ok && (Sol.empty() && pos == 0);
       i += k) {
    for (int j = i - k; j <= i - 1; j++) {
      if (Ans.find(j) == Ans.end()) {
        int val = V[j];
        if (S[val] > -1 && S[val] < i) {
          S[val]++;
          F[val]++;
          if (F[val] >= P[val].size()) {
            ok = 0;
            break;
          }
          if (P[val][F[val]] > last) {
            int oldlast = last;
            last = P[val][F[val]];
            for (int l = oldlast + 1; l < last; l++) Ans.insert(l);
          } else {
            if (Ans.find(P[val][F[val]]) != Ans.end())
              Ans.erase(Ans.find(P[val][F[val]]));
          }
        }
      }
    }
    if (!ok) break;
    while (*Ans.begin() < i) {
      Ans.erase(Ans.begin());
    }
    int nr = 0;
    for (int j = i; j <= i + k - 1; j++) {
      if (Ans.find(j) == Ans.end() && (S[V[j]] > -1 && P[V[j]][F[V[j]]] >= j)) {
        Out[j] = 1;
        nr++;
      }
      if (Ans.find(j) != Ans.end()) Ans.erase(Ans.find(j));
    }
    int extra = k - s;
    for (int j = i; j <= i + k - 1; j++) {
      if (Out[j] == 0) extra--;
      if (Out[j] == 0 && extra < 0) Ans.insert(j);
    }
    if ((m - Ans.size()) / k >= n) {
      Sol = Ans;
      if (Sol.size() == 0) pos = 1;
      break;
    }
  }
  if (Sol.size() == 0 && !pos)
    cout << -1;
  else
    cout << Sol.size() << endl;
  for (auto i : Sol) cout << i << " ";
  return 0;
}
