import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int k = in.nextInt();
int a = in.nextInt();
int b = in.nextInt();
in.nextLine(); // 消耗换行符,避免读取字符串时出错
// 读取能力值和合作值的字符串数组,转成int数组
String[] abilityStr = in.nextLine().split(" ");
String[] coorporationStr = in.nextLine().split(" ");
int[] abilities = new int[n];
int[] coors = new int[n];
for (int i = 0; i < n; i++) {
abilities[i] = Integer.parseInt(abilityStr[i]);
coors[i] = Integer.parseInt(coorporationStr[i]);
}
// 1. 构建available数组:标记每个学生是否同时满足两个条件(1=满足,0=不满足)
// 对满足条件的学生进行标记
int[] available = new int[n];
for (int i = 0; i < n; i++) {
// 关键:必须“能力≥a 且 合作≥b”才标记为1
if (abilities[i] >= a && coors[i] >= b) {
available[i] = 1;
} else {
available[i] = 0;
}
}
// 2. 计算前缀和数组:prefixSum[i] = 前i个学生中满足条件的数量(prefixSum[0]=0)
// 快速计算任意区间内满足条件的元素数量
int[] prefixSum = new int[n + 1];
for (int i = 0; i < n; i++) {
prefixSum[i + 1] = prefixSum[i] + available[i];
}
// 3. 滑动窗口:统计长度为k的区间中,满足条件的学生数=k的区间数量
int res = 0;
// 区间[i, j-1](长度k):prefixSum[j] - prefixSum[i] = 满足条件的学生数
for (int i = 0, j = k; j <= n; i++, j++) {
if (prefixSum[j] - prefixSum[i] == k) {
res++; // 区间内所有k个学生都满足,计数+1
}
}
System.out.println(res);
in.close();
}
}