#include <bits/stdc++.h>
using namespace std;
const int maxn = 100001;
const int maxq = 100001;
const int maxl = 400;
int dp[maxl][maxn];
int a[maxn];
vector<int> b[maxq];
int main() {
  ios_base::sync_with_stdio(false);
  int N, M, S, E;
  cin >> N >> M >> S >> E;
  for (int _n(N), i(0); i < _n; i++) cin >> a[i];
  for (int _n(M), i(0); i < _n; i++) {
    int x;
    cin >> x;
    b[x].push_back(i);
  }
  int ans = 0;
  for (int _n(N), i(0); i < _n; i++) {
    dp[1][i] = b[a[i]].empty() ? 1011111111 : b[a[i]][0];
    if (E + i + dp[1][i] + 2 <= S) ans = 1;
  }
  for (int j = 2; j <= S / E; ++j) {
    int mn = 1011111111;
    for (int _n(N), i(0); i < _n; i++) {
      auto it = upper_bound((b[a[i]]).begin(), (b[a[i]]).end(), mn);
      if (it == b[a[i]].end())
        dp[j][i] = 1011111111;
      else
        dp[j][i] = *it;
      if (j * E + i + 1 + dp[j][i] + 1 <= S) ans = j;
      mn = min(mn, dp[j - 1][i]);
    }
  }
  cout << ans << endl;
  return 0;
}
