
import java.io.*;
import java.util.*;

import static java.lang.Math.*;

public class Main {

    static class Solution extends Helper {
        public void solve(InputReader in, PrintWriter out) {
            int n = in.getInt(), k = in.getInt(), maxl = -INF, minl = INF, p = 0;
            List<Integer> x = new ArrayList<>();
            for (int i = 0; i < n; i++) {
                x.add(in.getInt());
            }
            Collections.sort(x);
            while(x.size() != 0 && x.get(x.size() - 1) - x.get(0) > k) {
                x.remove(x.size() - 1);

            }
            out.print(n - x.size());
        }
    }

    public static void main(String[] args) {
        Helper helper = new Helper();
        helper.RUN();
    }

    public static class Helper {

        private boolean online_judge = System.getProperty("ONLINE_JUDGE") != null;
        public static final int INF = Integer.MAX_VALUE;
        public static final long INFF = Long.MAX_VALUE;

        public int sqr() {
            return sqr();
        }

        public long sqr(int a) {
            return (long) a * a;
        }

        public long sqr(long a) {
            return a * a;
        }

        public double sqr(double a) {
            return a * a;
        }

        private void RUN() {
            Solution solution = new Solution();
            InputStream inputStream = System.in;
            if (!online_judge)
                try {
                    inputStream = online_judge ? System.in : new FileInputStream("./src/com/company/in.txt");
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            OutputStream outputStream = System.out;
            InputReader in = new InputReader(inputStream);
            PrintWriter out = new PrintWriter(outputStream);

            if (!online_judge) {
                byte cur_test = 1;
                while (true) {

                    try {
                        if (!in.bufferedReader.ready()) break;
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                    out.print("test#" + cur_test + "\n\n");
                    solution.solve(in, out);
                    out.print("\n\n");
                    cur_test++;

                }
                try {
                    COPY_FILE(inputStream, outputStream, in, out);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } else
                solution.solve(in, out);
            out.close();
            out.flush();
        }

        private void COPY_FILE(InputStream inputStream, OutputStream outputStream, InputReader in, PrintWriter out) throws IOException {
            inputStream = new FileInputStream("./src/com/company/Main.java");
            outputStream = new FileOutputStream("./src/com/company/output/Main.java");
            in = new InputReader(inputStream);
            out = new PrintWriter(outputStream);
            String line = "";
            while (in.bufferedReader.ready()) {
                line = in.getLine();
                if (!line.equals("package com.company;"))
                    out.write(line + "\n");
            }
            out.close();
        }
    }

    public static class InputReader {
        private BufferedReader bufferedReader;
        private StringTokenizer stringTokenizer;
        private String line;

        public InputReader(InputStream inputStream) {
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            stringTokenizer = null;
        }

        public String getLine() {
            line = "";
            try {
                line = bufferedReader.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return line;
        }

        public String getString() {
            while (stringTokenizer == null || !stringTokenizer.hasMoreTokens()) {
                try {
                    stringTokenizer = new StringTokenizer(bufferedReader.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return stringTokenizer.nextToken();
        }

        public int getInt() {
            return Integer.parseInt(getString());
        }

        public long getLong() {
            return Long.parseLong(getString());
        }

        public double getDouble() {
            return Double.parseDouble(getString());
        }
    }
}
