#include <iostream>
#include <set>
using namespace std;
const int N = 2e5 + 5;
int n, m, k;
int a[N], b[N];
multiset<int> mts;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m >> k;
for (int i = 1; i <= n; i++) {
cin >> a[i];
mts.insert(a[i]);
}
for (int i = 1; i <= m; i++) {
cin >> b[i];
}
sort(b + 1, b + m + 1);
int ans = 0;
for (int i = 1; i <= m; i++) {
if (mts.lower_bound(b[i] - k) == mts.end()) {
continue;
}
int x = *mts.lower_bound(b[i] - k);
if (x <= b[i] + k) {
ans++;
mts.erase(mts.find(x));
}
}
cout << ans << '\n';
return 0;
}