#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e18;
const int MOD = 1e9 + 7;
const int MAXN = 5e5 + 5;
const double PI = 4 * atan((double)1);
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int m, k, n, s;
  cin >> m >> k >> n >> s;
  vector<int> v(m, 0);
  int arr[MAXN];
  int minr[MAXN];
  int cur[MAXN];
  memset(arr, 0, sizeof(arr));
  memset(cur, 0, sizeof(cur));
  memset(minr, -1, sizeof(minr));
  int needed = 0;
  for (int i = (0); i < (m); i++) {
    cin >> v[i];
  }
  for (int i = (0); i < (s); i++) {
    int temp;
    cin >> temp;
    if (arr[temp] == 0) {
      needed++;
    }
    arr[temp]++;
  }
  int Count = 0;
  int l = 0, r = -1;
  while (l < m) {
    while (r < m) {
      if (Count == needed) {
        break;
      }
      r++;
      if (r >= m) {
        break;
      }
      cur[v[r]]++;
      if (arr[v[r]] == cur[v[r]]) {
        Count++;
      }
    }
    if (r >= m) {
      break;
    }
    minr[l] = r;
    cur[v[l]]--;
    if (cur[v[l]] == arr[v[l]] - 1) {
      Count--;
    }
    l++;
  }
  for (int i = (0); i < (m); i++) {
    if (minr[i] == -1) {
      cout << "-1\n";
      return 0;
    }
    int temp = minr[i] - i + 1;
    int start = (i + k) % k;
    if (m - (max(temp - k, 0) + start) < n * k) continue;
    if (temp < k) {
      cout << start << "\n";
      for (int i = (0); i < (start); i++) {
        cout << i + 1 << "\n";
      }
      return 0;
    }
    cout << temp - k + start << "\n";
    if (temp - k + start == 0) {
      return 0;
    }
    for (int i = (0); i < (start); i++) {
      cout << i + 1 << "\n";
    }
    for (int a = (0); a < (temp); a++) {
      arr[v[a + i]]--;
    }
    int temp2 = 0;
    for (int a = (0); a < (temp); a++) {
      if (arr[v[a + i]] < 0) {
        cout << a + i + 1 << "\n";
        temp2++;
        if (temp2 == temp - k) {
          return 0;
        }
        arr[v[a + i]]++;
      }
    }
  }
}
