'''input
1 2 3
4 5
6 7 8
45 9
'''

# What doesn't challenge you, makes you weaker.

import sys
# pow2 = pow              # for modular expo pow2(base, n, mod)
# from math import *
# from time import time
# from collections import defaultdict
# from bisect import bisect_right, bisect_left
# from string import ascii_lowercase as lcs
# from string import ascii_uppercase as ucs
# from fractions import Fraction, gcd
# from decimal import Decimal, getcontext
# from itertools import product, permutations, combinations
#getcontext().prec = 500
#sys.setrecursionlimit(30000)

mod = 10**9 + 7
INF = sys.maxint

raw_input = lambda: sys.stdin.readline().rstrip()
die = lambda : exit(0)
flush= lambda : sys.stdout.flush()

r_s = lambda: raw_input().strip()                   #read str
r_ss = lambda: raw_input().split()          #read stringss
r_i = lambda: int(raw_input())              #read int
r_is = lambda: map(int, raw_input().split())#read ints
r_f = lambda: float(raw_input())            #read float
r_fs = lambda: map(Decimal, raw_input().split()) #read floats

# For effieciently taking lots of queries with each query in a separate line
# having integer values separated by space.
r_qs = lambda: map(lambda s:map(int, s.split(' ')), sys.stdin.readlines())

'''-------------------------------------------------------------------'''

def main():
    finalres = []
    n,d = r_is()
    arr = r_is()
    cnt = n+1
    arr.sort()
    for i in range(n-1):
        for j in range(i+1,n):
            if arr[j]-arr[i]<=d:
                cnt = min(cnt, n-(j-i+1))
    print cnt
    # for _ in xrange(r_i()):
    # print '\n'.join(finalres)

if __name__ == '__main__':
    local = True
    # local = False
    if local:
        try:
            sys.stdin = open('input.txt')
            # sys.stdout = open('output.txt','w')
            print 'Running at local.'
            for i in range(r_i()):
                main()
        except IOError:
            main()
    else:
        main()
