#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC target(sse, sse1, sse2, tune = native, popcnt)
using namespace std;
const long long inf = 1e9 + 47, MAXN = 5e5 + 47;
long long m, k, n, s;
vector<long long> a, used(MAXN, 0), b(MAXN, 0);
void solve() {
  cin >> m >> k >> n >> s;
  a.resize(m);
  for (long long i = 0; i < m; ++i) {
    cin >> a[i];
    a[i]--;
  }
  for (long long i = 0; i < s; ++i) {
    long long c;
    cin >> c;
    used[c - 1]--;
    b[c - 1]++;
  }
  long long sub = 0;
  for (long long i = 0; i < MAXN; ++i)
    if (used[i] < 0) sub++;
  long long r = 0;
  for (long long l = 0; l < m; ++l) {
    long long gr = l + k - 1;
    if (gr >= m) break;
    while (r <= gr || sub > 0) {
      if (r >= m) break;
      used[a[r]]++;
      if (used[a[r]] == 0) sub--;
      r++;
    }
    if (r == m && sub != 0) break;
    long long t = l / k + 1 + (m - 1 - (r - 1)) / k;
    if (t >= n && sub == 0) {
      long long add = k - s;
      vector<long long> ans;
      for (long long ind = l; ind < r; ++ind) {
        if (b[a[ind]] > 0) {
          b[a[ind]]--;
        } else if (add > 0) {
          add--;
        } else
          ans.push_back(ind + 1);
      }
      cout << (long long)ans.size() << endl;
      for (long long c : ans) cout << c << " ";
      cout << endl;
      return;
    }
    used[a[l]]--;
    if (used[a[l]] == -1) sub++;
  }
  cout << -1 << endl;
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie();
  long long t = 1;
  while (t--) {
    solve();
  }
}
