#include <bits/stdc++.h>
using namespace std;
const int maxn = (int)6e5 + 1;
int m, k, n, s;
int a[maxn], b[maxn], ls[maxn], u[maxn];
vector<int> cur, ps[maxn], z;
int get(int l, int r) {
  vector<int> q;
  for (int i = 1; i <= s; i++) {
    ls[b[i]] = 0;
  }
  for (int i = 1; i <= s; i++) {
    if (ps[b[i]].size() == 0) {
      return 1e9;
    }
    if (ps[b[i]].back() == ls[b[i]] || ps[b[i]].back() < l) {
      return 1e9;
    }
    int pos =
        *upper_bound(ps[b[i]].begin(), ps[b[i]].end(), max(l - 1, ls[b[i]]));
    q.push_back(pos);
    ls[b[i]] = pos;
  }
  sort(q.begin(), q.end());
  z = q;
  if (q.size() == 0) {
    cout << "WHAT";
    exit(0);
  }
  return q.back() - r;
}
int main() {
  cin >> m >> k >> n >> s;
  for (int i = 1; i <= m; i++) {
    cin >> a[i];
    ps[a[i]].push_back(i);
  }
  for (int i = 1; i <= s; i++) {
    cin >> b[i];
  }
  int h = m - (n * k);
  for (int i = 1; i <= m; i += k) {
    int e = get(i, i + k - 1);
    if (e <= h) {
      for (int j : z) {
        u[j] = 1;
      }
      int pos = i;
      while (e > 0) {
        if (!u[pos]) {
          e--;
          cur.push_back(pos);
        }
        pos++;
      }
      cout << cur.size() << "\n";
      for (int j : cur) {
        cout << j << " ";
      }
      return 0;
    }
  }
  cout << -1;
}
