#include <bits/stdc++.h>
using namespace std;
int a[500010], b[500010], c[500010], d[500010];
set<int> t, t1;
int main() {
  int m, k, n, s;
  scanf("%d%d%d%d", &m, &k, &n, &s);
  int maxn = m - k * n;
  for (int i = 1; i <= m; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= s; i++) {
    scanf("%d", &b[i]);
    t.insert(b[i]);
    t1.insert(b[i]);
    c[b[i]]++;
  }
  int i = 1;
  queue<int> q;
  while (i <= m) {
    if (t.count(a[i]) == 1) {
      d[a[i]]++;
      if (d[a[i]] >= c[a[i]]) t1.erase(a[i]);
      q.push(i);
    }
    if (t1.size() == 0) break;
    i++;
  }
  if (t1.size() != 0) {
    cout << "-1";
    return 0;
  }
  while (i <= m) {
    int pos = q.front();
    int num1 = (pos - 1) % k;
    int num2 = (i - pos + 1) - k;
    if (num2 < 0) {
      if (num1 + num2 > 0) {
        num1 = num1 + num2;
        num2 = 0;
      } else
        num1 = num2 = 0;
    }
    if (maxn >= num1 + num2) {
      cout << num1 + num2 << '\n';
      for (int j = pos - num1; j < pos; j++) printf("%d ", j);
      for (int j = pos; j <= i && num2 > 0; j++) {
        if (j == q.front()) {
          if (d[a[j]] > c[a[j]]) {
            printf("%d ", j);
            num2--;
            d[a[j]]--;
          }
          q.pop();
        } else {
          printf("%d ", j);
          num2--;
        }
      }
      return 0;
    }
    d[a[pos]]--;
    q.pop();
    if (d[a[pos]] >= c[a[pos]])
      continue;
    else {
      i++;
      while (i <= m) {
        if (t.count(a[i]) == 1) {
          d[a[i]]++;
          q.push(i);
          if (d[a[pos]] >= c[a[pos]]) break;
        }
        i++;
      }
      if (d[a[pos]] < c[a[pos]]) {
        printf("-1");
        return 0;
      }
    }
  }
  return 0;
}
