#include <bits/stdc++.h>
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
long long rand(long long l, long long r) {
  uniform_int_distribution<long long> uid(l, r);
  return uid(rng);
}
const int mod = 1e9 + 7;
const int mod1 = 998244353;
const int B = 37;
int pwr(int a, long long b) {
  int ans = 1;
  while (b) {
    if (b & 1) {
      ans = ((long long)ans * a) % mod;
    }
    a = ((long long)a * a) % mod;
    b >>= 1;
  }
  return ans;
}
const int N = 5e5 + 5;
int cnt[N], cur[N], a[N];
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(NULL);
  cout.tie(NULL);
  int n, k, m, s;
  cin >> m >> k >> n >> s;
  for (int i = 1; i <= m; i++) {
    cin >> a[i];
  }
  int z = 0;
  for (int i = 1; i <= s; i++) {
    int x;
    cin >> x;
    cnt[x]++;
    if (cnt[x] == 1) z++;
  }
  int pt = 0;
  vector<int> ans;
  for (int i = 1; i <= m; i++) {
    while (z > 0 && pt < m) {
      pt++;
      cur[a[pt]]++;
      if (cur[a[pt]] == cnt[a[pt]]) z--;
    }
    if (!z) {
      int pt1 = max(pt, min(m, i + k - 1));
      int tot = (i - 1) / k + (m - pt1) / k + 1;
      if (tot >= n) {
        for (int j = 1; j <= (i - 1) % k; j++) {
          ans.push_back(j);
        }
        int cr = pt1 - i + 1;
        while (cr > k) {
          for (int j = i; j <= pt1; j++) {
            if (cur[a[j]] > cnt[a[j]] && cr > k) {
              cr--;
              cur[a[j]]--;
              ans.push_back(j);
            }
          }
        }
        cout << (int)ans.size() << '\n';
        for (int x : ans) {
          cout << x << " ";
        }
        return 0;
      }
    }
    cur[a[i]]--;
    if (cur[a[i]] < cnt[a[i]]) {
      z++;
    }
  }
  cout << -1;
  return 0;
}
