#include <bits/stdc++.h>
using namespace std;
int m, k, n, s;
int a[500010];
int b[500010];
int cur[500010];
int need[500010];
int can;
int main() {
  scanf("%d%d%d%d", &m, &k, &n, &s);
  for (int i = 0; i < m; i++) {
    scanf("%d", a + i);
  }
  for (int i = 0; i < s; i++) {
    scanf("%d", b + i);
    need[b[i]]++;
  }
  int l = 0;
  int r = 0;
  int z = s;
  can = m - n * k;
  for (; r < k; r++) {
    cur[a[r]]++;
    if (cur[a[r]] <= need[a[r]]) z--;
  }
  if (z == 0) {
    cout << 0 << endl;
    return 0;
  }
  pair<pair<int, int>, pair<int, int> > ans = {{0, 0}, {0, 100000000}};
  while (1) {
    while (z) {
      if (r >= m) {
        if (ans.second.second == 100000000) {
          cout << -1 << endl;
          return 0;
        }
        if (ans.second.second <= 0) {
          cout << 0 << endl;
          return 0;
        }
        cout << ans.second.second << endl;
        for (int i = 0; i < min(ans.second.first, ans.second.second); i++) {
          cout << ans.first.first - i << " ";
        }
        memset(cur, 0, sizeof cur);
        int rem = ans.second.second - ans.second.first;
        if (rem <= 0) return 0;
        for (int i = ans.first.first; i < ans.first.second && rem; i++) {
          cur[a[i]]++;
          if (cur[a[i]] > need[a[i]]) {
            cur[a[i]]--;
            cout << i + 1 << " ";
            rem--;
          }
        }
        return 0;
      }
      cur[a[r]]++;
      if (cur[a[r]] <= need[a[r]]) z--;
      r++;
    }
    int cont = 0;
    while (z == 0) {
      cur[a[l]]--;
      if (cur[a[l]] < need[a[l]]) {
        z++;
        break;
      }
      cont++;
      l++;
    }
    int zz = ((l) % k);
    int res = zz;
    res += (r - l) - k;
    if (res <= can) {
      if (res < ans.second.second) {
        ans.first.first = l;
        ans.first.second = r;
        ans.second.first = zz;
        ans.second.second = res;
      }
    }
    l++;
  }
  return 0;
}
