#include <bits/stdc++.h>
using namespace std;
int n, m, s, e;
int a[101309];
vector<int> b[101309];
int dp[101309][301];
int val(int x, int pos) {
  int p = upper_bound(b[x].begin(), b[x].end(), pos) - b[x].begin();
  if (p >= (int)b[x].size()) return 1000000007;
  return b[x][p];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie();
  cout.tie();
  cin >> n >> m >> s >> e;
  int sz = s / e;
  for (int i = (1); i <= (n); i++) cin >> a[i];
  for (int i = (1); i <= (m); i++) {
    int x;
    cin >> x;
    b[x].push_back(i);
  }
  for (int i = (1); i <= (sz); i++) dp[0][i] = 1000000007;
  for (int i = (1); i <= (n); i++)
    for (int j = (1); j <= (sz); j++)
      dp[i][j] = min(dp[i - 1][j], val(a[i], dp[i - 1][j - 1]));
  for (int j = (sz); j >= (1); j--)
    for (int i = (1); i <= (n); i++)
      if (dp[i][j] + i + j * e <= s) {
        cout << j;
        return 0;
      }
  cout << 0;
  return 0;
}
