from collections import defaultdict
import numpy as np
import sys

n = int(input())
xy = np.array([list(map(int, input().split())) for _ in range(n)])

if n == 1:
    print(1)
    sys.exit()

memo = defaultdict(int)

for i in xy:
    for j in xy:
        if np.all(i == j):
            continue
        else:
            tmp = j - i
            if tmp[0] < 0:
                tmp *= -1
            elif tmp[0] == 0 and tmp[1] < 0:
                tmp *= -1
            memo[str(tmp)] += 1

print(n - max(memo.values()) // 2) from collections import defaultdict import numpy as np numpy import sys sys n = int(input()) n int(input()) int input() input list(map(int, input().split())) for _ in range(n) for _ in range(n) _ range(n) range n for _ in range(n) list(map(int, input().split())) list map(int, input().split()) map int input().split() ().split () input split xy = np.array([list(map(int, input().split())) for _ in range(n)]) xy np.array([list(map(int, input().split())) for _ in range(n)]) np.array np array [list(map(int, input().split())) for _ in range(n)] if n == 1:
    print(1)
    sys.exit() n == 1 n 1 print(1) print 1 sys.exit() sys.exit sys exit memo = defaultdict(int) memo defaultdict(int) defaultdict int for i in xy:
    for j in xy:
        if np.all(i == j):
            continue
        else:
            tmp = j - i
            if tmp[0] < 0:
                tmp *= -1
            elif tmp[0] == 0 and tmp[1] < 0:
                tmp *= -1
            memo[str(tmp)] += 1 i xy for j in xy:
        if np.all(i == j):
            continue
        else:
            tmp = j - i
            if tmp[0] < 0:
                tmp *= -1
            elif tmp[0] == 0 and tmp[1] < 0:
                tmp *= -1
            memo[str(tmp)] += 1 j xy if np.all(i == j):
            continue
        else:
            tmp = j - i
            if tmp[0] < 0:
                tmp *= -1
            elif tmp[0] == 0 and tmp[1] < 0:
                tmp *= -1
            memo[str(tmp)] += 1 np.all(i == j) np.all np all i == j i j continue tmp = j - i tmp j - i j i if tmp[0] < 0:
                tmp *= -1
            elif tmp[0] == 0 and tmp[1] < 0:
                tmp *= -1
             tmp[0] < 0 tmp[0] tmp 0 0 tmp *= -1 tmp -1 elif tmp[0] == 0 and tmp[1] < 0:
                tmp *= -1
             tmp[0] == 0 and tmp[1] < 0 tmp[0] == 0 tmp[0] tmp 0 0 tmp[1] < 0 tmp[1] tmp 1 0 tmp *= -1 tmp -1 memo[str(tmp)] += 1 memo[str(tmp)] memo str(tmp) str tmp 1 print(n - max(memo.values()) // 2) print n - max(memo.values()) // 2 n max(memo.values()) // 2 max(memo.values()) max memo.values() memo.values memo values 2 memo = defaultdict(int) defaultdict(int) memo tmp *= -1 -1 tmp n = int(input()) int(input()) n tmp = j - i j - i tmp xy = np.array([list(map(int, input().split())) for _ in range(n)]) np.array([list(map(int, input().split())) for _ in range(n)]) xy tmp *= -1 -1 tmp
from collections import defaultdict
import numpy as np
import sys

n = int(input())
xy = np.array([list(map(int, input().split())) for _ in range(n)])

if n == 1:
    print(1)
    sys.exit()

memo = defaultdict(int)

for i in xy:
    for j in xy:
        if np.all(i == j):
            continue
        else:
            tmp = j - i
            if tmp[0] < 0:
                tmp *= -1
            elif tmp[0] == 0 and tmp[1] < 0:
                tmp *= -1
            memo[str(tmp)] += 1

print(n - max(memo.values()) // 2)