#include <bits/stdc++.h>
using namespace std;
int m, k, n, s, val;
int a[510000], sq[510000], last[510000], fix[510000], need;
vector<int> occ[510000];
bool vis[510000];
int maxrem;
void gotit(int l, int r) {
  vector<int> v;
  for (int i = l; i <= r; i++) {
    if (sq[a[i]] <= 0) v.push_back(i);
    sq[a[i]]--;
  }
  cout << min(maxrem, (int)v.size()) << endl;
  for (int i = 0; i < min(maxrem, (int)v.size()); i++) cout << v[i] << " ";
  cout << endl;
  exit(0);
}
int main() {
  cin >> m >> k >> n >> s;
  for (int i = 1; i <= m; i++) cin >> a[i];
  for (int i = 1; i <= s; i++) {
    cin >> val;
    sq[val]++;
    need += !vis[val];
    vis[val] = 1;
  }
  maxrem = m - n * k;
  set<pair<int, int> > s;
  for (int i = 1; i <= m; i++) {
    occ[a[i]].push_back(i);
    while (occ[a[i]].size() - last[a[i]] > sq[a[i]]) last[a[i]]++;
    if (sq[a[i]] && occ[a[i]].size() - last[a[i]] == sq[a[i]]) {
      int del = occ[a[i]][last[a[i]]];
      if (fix[a[i]]) s.erase(make_pair(fix[a[i]], a[i]));
      s.insert(make_pair(del, a[i]));
      fix[a[i]] = del;
    }
    if (s.size() == need) {
      int cur = s.begin()->first;
      int range = i - cur + 1 + (cur - 1) % k;
      int deln = range - k;
      if (deln <= maxrem) gotit(i - range + 1, i);
    }
  }
  cout << -1 << endl;
}
