#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
// 定义一个结构体,表示小朋友的开始和结束时间
struct Child {
int start; // 开始时间
int end; // 结束时间
};
// 定义一个比较函数,按照结束时间从小到大排序
bool cmp(Child a, Child b) {
return a.end < b.end;
}
// 定义一个函数,计算幸福时刻数
int happyTime(vector<Child>& children, int k) {
// 对小朋友的时间段进行排序
sort(children.begin(), children.end(), cmp);
// 初始化幸福时刻数为0
int ans = 0;
// 初始化当前时刻为0
int cur = 0;
// 初始化当前玩耍的小朋友数为0
int cnt = 0;
// 遍历所有的小朋友
for (int i = 0; i < children.size(); i++) {
// 如果当前时刻小于小朋友的开始时间,说明没有小朋友可以玩
if (cur < children[i].start) {
// 更新当前时刻为小朋友的开始时间
cur = children[i].start;
// 更新当前玩耍的小朋友数为1
cnt = 1;
}
// 否则,说明当前时刻有小朋友可以玩
else {
// 更新当前玩耍的小朋友数加1
cnt++;
}
// 如果当前玩耍的小朋友数不少于k,说明当前时刻是幸福的
if (cnt >= k) {
// 更新幸福时刻数加1
ans++;
}
// 更新当前时刻为小朋友的结束时间加1
cur = children[i].end + 1;
}
// 返回幸福时刻数
return ans;
}
// 主函数
int main() {
// 输入n和k
int n, k;
cin >> n >> k;
// 定义一个向量,存储所有的小朋友
vector<Child> children(n);
// 输入所有小朋友的开始和结束时间
for (int i = 0; i < n; i++) {
cin >> children[i].start;
}
for (int i = 0; i < n; i++) {
cin >> children[i].end;
}
// 调用函数,计算幸福时刻数
int ans = happyTime(children, k);
// 输出结果
cout << ans << endl;
// 返回0
return 0;
}