import collections

N = int(input())
balls = []
for i in range(N):
    x, y = map(int, input().split())
    balls.append((x, y))

moves = collections.defaultdict(list)
mmax = 0
vmax = None
for i in range(N):
    for j in range(i):
        x1, y1 = balls[i]
        x2, y2 = balls[j]
        if y1 > y2 or (y1 == y2 and x1 > x2):
            x1, x2 = x2, x1
            y1, y2 = y2, y1
        moves[x2-x1, y2-y1].append((j, i))
        m = len(moves[x2-x1, y2-y1])
        if m > mmax:
            mmax = m
            vmax = (x2-x1, y2-y1)

#print(mmax, vmax)
print(N - mmax) import collections collections N = int(input()) N int(input()) int input() input balls = [] balls [] for i in range(N):
    x, y = map(int, input().split())
    balls.append((x, y)) i range(N) range N x, y = map(int, input().split()) x map(int, input().split()) map int input().split() ().split () input split y balls.append((x, y)) balls.append balls append (x, y) x y moves = collections.defaultdict(list) moves collections.defaultdict(list) collections.defaultdict collections defaultdict list mmax = 0 mmax 0 vmax = None vmax None for i in range(N):
    for j in range(i):
        x1, y1 = balls[i]
        x2, y2 = balls[j]
        if y1 > y2 or (y1 == y2 and x1 > x2):
            x1, x2 = x2, x1
            y1, y2 = y2, y1
        moves[x2-x1, y2-y1].append((j, i))
        m = len(moves[x2-x1, y2-y1])
        if m > mmax:
            mmax = m
            vmax = (x2-x1, y2-y1)

#print(mmax, vmax) i range(N) range N for j in range(i):
        x1, y1 = balls[i]
        x2, y2 = balls[j]
        if y1 > y2 or (y1 == y2 and x1 > x2):
            x1, x2 = x2, x1
            y1, y2 = y2, y1
        moves[x2-x1, y2-y1].append((j, i))
        m = len(moves[x2-x1, y2-y1])
        if m > mmax:
            mmax = m
            vmax = (x2-x1, y2-y1)

#print(mmax, vmax) j range(i) range i x1, y1 = balls[i] x1 balls[i] balls i y1 x2, y2 = balls[j] x2 balls[j] balls j y2 if y1 > y2 or (y1 == y2 and x1 > x2):
            x1, x2 = x2, x1
            y1, y2 = y2, y1
         y1 > y2 or (y1 == y2 and x1 > x2) y1 > y2 y1 y2 y1 == y2 and x1 > x2 y1 == y2 y1 y2 x1 > x2 x1 x2 x1, x2 = x2, x1 x1 x2 x2 x1 y1, y2 = y2, y1 y1 y2 y2 y1 moves[x2-x1, y2-y1].append((j, i)) [x2-x1, y2-y1].append [x2-x1, y2-y1] moves x2-x1 x2 x1 append (j, i) j i m = len(moves[x2-x1, y2-y1]) m len(moves[x2-x1, y2-y1]) len moves[x2-x1, y2-y1] moves x2-x1 x2 x1 if m > mmax:
            mmax = m
            vmax = (x2-x1, y2-y1)

#print(mmax, vmax) m > mmax m mmax mmax = m mmax m vmax = (x2-x1, y2-y1) vmax (x2-x1, y2-y1) x2-x1 x2 x1 y2-y1 y2 y1 print(N - mmax) print N - mmax N mmax x2, y2 = balls[j] balls[j] x2 y2 = y2, y1 y1 y2 balls = [] [] balls y2 = balls[j] balls[j] y2 vmax = None None vmax y1, y2 = y2, y1 y2 y1 x, y = map(int, input().split()) map(int, input().split()) x x1, x2 = x2, x1 x2 x1 N = int(input()) int(input()) N x1, y1 = balls[i] balls[i] x1 x2 = x2, x1 x1 x2 vmax = (x2-x1, y2-y1) (x2-x1, y2-y1) vmax y = map(int, input().split()) map(int, input().split()) y mmax = m m mmax y1 = balls[i] balls[i] y1 mmax = 0 0 mmax m = len(moves[x2-x1, y2-y1]) len(moves[x2-x1, y2-y1]) m moves = collections.defaultdict(list) collections.defaultdict(list) moves
import collections

N = int(input())
balls = []
for i in range(N):
    x, y = map(int, input().split())
    balls.append((x, y))

moves = collections.defaultdict(list)
mmax = 0
vmax = None
for i in range(N):
    for j in range(i):
        x1, y1 = balls[i]
        x2, y2 = balls[j]
        if y1 > y2 or (y1 == y2 and x1 > x2):
            x1, x2 = x2, x1
            y1, y2 = y2, y1
        moves[x2-x1, y2-y1].append((j, i))
        m = len(moves[x2-x1, y2-y1])
        if m > mmax:
            mmax = m
            vmax = (x2-x1, y2-y1)

#print(mmax, vmax)
print(N - mmax)
