#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
const int MAX_N = 500005;
int m, k, n, s;
int a[MAX_N];
int b[MAX_N];
int bCnt[MAX_N];
int currCnt[MAX_N];
int main() {
  ios::sync_with_stdio(false);
  cin >> m >> k >> n >> s;
  for (int i = 0; i < m; i++) cin >> a[i];
  for (int i = 0; i < s; i++) {
    cin >> b[i];
    bCnt[b[i]]++;
  }
  int needCnt = 0;
  for (int i = 0; i < MAX_N; i++) {
    if (bCnt[i] == 0)
      bCnt[i] = -10;
    else
      needCnt++;
  }
  int cntGood = 0;
  for (int l = 0, r = -1; l < m;) {
    if (cntGood != needCnt)
      while (r + 1 < m) {
        r++;
        currCnt[a[r]]++;
        if (currCnt[a[r]] == bCnt[a[r]]) cntGood++;
        if (cntGood == needCnt) break;
      }
    if (cntGood == needCnt) {
      int needRemove = (l % k) + max(0, r - l + 1 - k);
      if (needRemove <= m - n * k) {
        cout << needRemove << endl;
        for (int i = 0; i < (l % k); i++) cout << (i + 1) << " ";
        needRemove -= (l % k);
        for (int i = 0; i < MAX_N; i++) currCnt[i] = 0;
        for (int i = l; needRemove > 0 && i <= r; i++) {
          currCnt[a[i]]++;
          if (currCnt[a[i]] > bCnt[a[i]]) {
            needRemove--;
            cout << (i + 1) << " ";
          }
        }
        cout << endl;
        return 0;
      }
    }
    if (currCnt[a[l]] == bCnt[a[l]]) cntGood--;
    currCnt[a[l]]--;
    l++;
  }
  cout << "-1" << endl;
}
