#include <bits/stdc++.h>
using namespace std;
int m, k, n, s;
vector<int> a;
int pre[500005] = {}, reqcmp = 0;
int used[500005] = {}, comp = 0;
void solve(int l, int r) {
  int ans = 0;
  vector<int> ansl;
  int remi = l % k;
  int lp = l - remi;
  while (lp / k >= n) {
    remi += k;
    lp -= k;
  }
  ans += remi;
  for (int i = 0; i < remi; i++) {
    ansl.push_back(i + 1);
  }
  int rem = r - l + 1;
  for (int i = l; i <= r; i++) {
    if (pre[a[i]]) {
      pre[a[i]]--;
    } else {
      if (rem > k) {
        ansl.push_back(i + 1);
        ans++;
        rem--;
      }
    }
  }
  cout << ans << endl;
  for (int i = 0; i < ans; i++) {
    cout << ansl[i] << " ";
  }
  cout << endl;
}
int main() {
  cin >> m >> k >> n >> s;
  a.resize(m);
  vector<int> b(s);
  for (int i = 0; i < m; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < s; i++) {
    cin >> b[i];
    if (!pre[b[i]]) {
      reqcmp++;
    }
    pre[b[i]]++;
  }
  int ans = 0, j;
  for (j = 0; j < m; j++) {
    used[a[j]]++;
    if (used[a[j]] == pre[a[j]]) {
      comp++;
    }
    if (comp == reqcmp) {
      break;
    }
  }
  if (j == m) {
    cout << -1 << endl;
    return 0;
  }
  int r = max(0 + k - 1, j);
  if ((m - r - 1) / k + 1 >= n) {
    solve(0, r);
    return 0;
  }
  for (int i = 1; i < m; i++) {
    if (pre[a[i - 1]]) {
      used[a[i - 1]]--;
      if (used[a[i - 1]] < pre[a[i - 1]]) {
        j++;
        used[a[j]]++;
        while (j < m && a[j] != a[i - 1]) {
          j++;
          if (j < m) {
            used[a[j]]++;
          }
        }
      }
    }
    if (j == m) {
      break;
    }
    r = max(i + k - 1, j);
    if (i / k + (m - r - 1) / k + 1 >= n) {
      solve(i, r);
      return 0;
    }
  }
  cout << -1 << endl;
  return 0;
}
