#include <bits/stdc++.h>
using namespace std;
int m, k, n, s;
int a[500005];
int b[500005];
int nxt[500005];
int mp[500005];
int vis[500005];
int cur[500005];
int main() {
  while (~scanf("%d%d%d%d", &m, &k, &n, &s)) {
    for (int i = 1; i <= m; i++) {
      scanf("%d", &a[i]);
    }
    memset(b, 0, sizeof(b));
    for (int i = 0; i < s; i++) {
      int tp;
      scanf("%d", &tp);
      b[tp]++;
    }
    memset(mp, 0, sizeof(mp));
    for (int i = m; i >= 1; i--) {
      nxt[i] = mp[a[i]];
      mp[a[i]] = i;
    }
    memset(vis, 0, sizeof(vis));
    int l = 1, r, cnt = 0;
    for (int i = 1; i <= m; i++) {
      if (b[a[i]] != 0) {
        b[a[i]]--;
        vis[i] = 1;
        cnt++;
        cur[a[i]] = i;
        if (cnt == s) {
          r = i;
          break;
        }
      }
    }
    if (r - l + 1 < k) r = l + k - 1;
    int f = 0;
    if (r <= m)
      for (int i = 1; i <= m; i++) {
        l = i;
        if (((i - 1) / k + 1 + (m - r) / k) >= n) {
          f = 1;
          int ctp = (i - 1) / k;
          int d = (i - 1) % k + (r - l + 1 - k);
          printf("%d\n", d);
          int sta = ctp * k;
          for (int j = sta + 1; j < i; j++) printf("%d ", j);
          int ct = 0;
          for (int j = l; j <= r && ct < (r - l + 1 - k); j++) {
            if (vis[j] == 0) {
              printf("%d ", j);
              ct++;
            }
          }
          printf("\n");
          break;
        }
        if (vis[i] == 1) {
          if (nxt[cur[a[i]]] == 0) break;
          r = max(r, nxt[cur[a[i]]]);
          cur[a[i]] = nxt[cur[a[i]]];
          vis[cur[a[i]]] = 1;
        }
        if (r - l + 1 < k) r++;
        if (r > m) break;
      }
    if (f == 0) {
      printf("-1\n");
    }
  }
  return 0;
}
