2 1
1 1
 4 1
2 2 1 1
 10 1
2 6 3 4 2 4 4 3 2 1
 2 1
999152 999153
 8 1000000
1 1 5 1000000 1000000 2 2 2
 9 2
1 6 1 5 5 8 6 8 7
 15 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 1 4
8
 10 1
6 3 1 3 6 4 1 3 6 4
 10 1
1 2 3 5 6 8 10 11 9 4
 7 2
1 5 5 8 9 8 8
 2 1000000
1 1000000
 8 2
3 13 9 8 3 13 9 14
 1 1
1
 2 1
1 2

2
 2
 4
 1
 2
 4
 15
 1
 7
 2
 4
 1
 5
 1
 1

import java.util.*;
import java.io.*;
public class CF990B{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] s = br.readLine().split(" ");
        int n = Integer.parseInt(s[0]);
        int k = Integer.parseInt(s[1]);
        int[] a = new int[1000001];
        int ans = 0;
        PriorityQueue<Node> pq1 = new PriorityQueue<Node>(new NodeSort());
        PriorityQueue<Node> pq2 = new PriorityQueue<Node>(new NodeSort());
        s = br.readLine().split(" ");
        for(int i=0;i<n;i++){
            a[Integer.parseInt(s[i])]++;
        }
        for(int i=1;i<1000001;i++){
            if(a[i] != 0){
                pq1.add(new Node(i, a[i]));
            }
        }
        while(!pq1.isEmpty()){
            Node bi = pq1.poll();
            while(!pq2.isEmpty()){
                Node bj = pq2.poll();
                if(bi.val <= bj.val + k){

                }else{
                    ans += bj.count;
                }
            }
            pq2.add(bi);
            //System.out.println(bi+" "+ans);
        }
        while(!pq2.isEmpty()){
            ans += pq2.poll().count;
            //System.out.println(bi+" "+ans);
        }
        System.out.println(ans);
    }
}
class Node{
    int val;
    int count;
    public Node(int val, int count){
        this.val = val;
        this.count = count;
    }
}
class NodeSort implements Comparator<Node>{
    public int compare(Node n1, Node n2){
        return n1.val - n2.val;
    }
}
