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();
    }
}