#include <bits/stdc++.h>
clock_t t_;
using namespace std;
template <class T>
void print(T s) {
  cout << s << "\n";
}
template <class T>
void emax(T &a, T b) {
  a = (a < b ? b : a);
};
template <class T>
void emin(T &a, T b) {
  a = (a > b ? b : a);
}
template <class T>
void printC(T s) {
  for (auto &x : s) {
    cout << x << " ";
  }
  cout << "\n";
}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int m, k, n, s;
int a[500005];
int b[500005];
int quant[500005];
bool exists[500005];
int counts[500005];
int ammount = 0;
int diferentes = 0;
void add(int &r) {
  ++r;
  if (exists[a[r]]) {
    counts[a[r]]++;
    if (counts[a[r]] == quant[a[r]]) ammount++;
  }
}
void rem(int &l) {
  if (exists[a[l]]) {
    if (counts[a[l]] == quant[a[l]]) ammount--;
    counts[a[l]]--;
  }
  l++;
}
void printAns(int l, int r) {
  int toR = l % k + (r - l + 1) - k + (m - r - 1) % k;
  print(toR);
  for (int i = int(0); i < int(l % k); i++) {
    cout << i + 1 << " ";
  }
  int toPrint = s;
  map<int, bool> indices;
  for (int i = int(l); i < int(r + 1); i++) {
    if (quant[a[i]]) {
      indices[i] = true;
      quant[a[i]]--;
    }
  }
  for (int i = int(l); i < int(r + 1); i++) {
    if (toPrint < k && !indices[i]) {
      indices[i] = true;
      toPrint++;
    }
  }
  for (int i = int(l); i < int(r + 1); i++) {
    if (!indices[i]) {
      cout << i + 1 << " ";
    }
  }
  for (int i = int(0); i < int((m - r - 1) % k); i++) {
    cout << r + 1 + i + 1 << " ";
  }
  cout << "\n";
}
int main(int argc, const char *argv[]) {
  t_ = clock();
  cin >> m >> k >> n >> s;
  for (int i = int(0); i < int(m); i++) {
    cin >> a[i];
  }
  for (int i = int(0); i < int(s); i++) {
    cin >> b[i];
    quant[b[i]]++;
    exists[b[i]] = true;
  }
  for (int i = int(0); i < int(500005); i++) {
    if (quant[i]) {
      diferentes++;
    }
  }
  int l = 0, r = -1;
  int canR = m - n * k;
  int minW = k;
  while (r < m) {
    while (r + 1 < m && ammount < diferentes) {
      add(r);
    }
    while (r + 1 < m && r - l + 1 < minW) {
      add(r);
    }
    int ret = l / k + (m - r - 1) / k;
    int toR = l % k + (r - l + 1) - k + (m - r - 1) % k;
    if ((r - l + 1) >= minW && toR <= canR && ammount >= diferentes) {
      printAns(l, r);
      return 0;
    }
    rem(l);
    if (l > r) {
      r = l - 1;
      ammount = 0;
      memset(counts, 0, sizeof counts);
    }
  }
  print(-1);
  t_ = clock() - t_;
  cerr << setprecision(9) << fixed << ((float)t_ / CLOCKS_PER_SEC) << endl;
  return 0;
}
