#include <bits/stdc++.h>
using namespace std;
template <typename T>
bool cmp(T a, T b) {
  if (a.first != b.first) return a.first < b.first;
  return a.second < b.second;
}
int n, m, k, s, num = 0, own = 0;
vector<int> a((int)5e5 + 10), b((int)5e5 + 10), nd((int)5e5 + 10, 0),
    cnt((int)5e5 + 10, 0);
vector<bool> vis((int)5e5 + 10, 0);
void sol(int S) {
  for (int i = S;; i++) {
    if (nd[a[i]] > 0) vis[i] = 1;
    if (!(--nd[a[i]])) num--;
    if (!num) {
      int t = i - S + 1 - s - (m - n * k), j = S;
      while (t > 0) {
        if (!vis[j]) vis[j] = 1, t--;
        j++;
      }
      cout << ((t < 0) ? (i - S + 1 - s) : (m - n * k)) << "\n";
      for (int j = S; j <= i; j++)
        if (!vis[j]) cout << j << " ";
      return;
    }
  }
}
int main(void) {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> m >> k >> n >> s;
  for (int i = 1; i <= m; i++) cin >> a[i];
  for (int i = 1; i <= s; i++) {
    cin >> b[i];
    if (!nd[b[i]]++) num++;
  }
  for (int i = 1, j = 1; i <= m; i++) {
    while (j <= m && own < num) {
      if (nd[a[j]] && ++cnt[a[j]] == nd[a[j]]) own++;
      j++;
    }
    if (own < num) break;
    if (j - (i + k - 1) / k * k - 1 <= m - n * k) return sol(i), 0;
    if (nd[a[i]] && --cnt[a[i]] < nd[a[i]]) own--;
  }
  cout << -1 << "\n";
  return 0;
}
