from itertools import combinations

N = int(input())
l = [tuple(map(int, input().split())) for _ in range(N)]
t = {i for i in l}

if N==1 or N==2:
    print(1)
else:
    ans = N
    for i in range(N):
        for j, k in combinations([l[j] for j in range(N) if j!=i], 2):
            x1, y1 = j
            x2, y2 = k
            x, y = x1-x2, y1-y2

            b = 1
            for m in range(N):
                if i==m:continue
                x3, y3 = l[m]
                if not (x3-x, y3-y) in t:
                    b += 1
            ans = min(ans, b)
    print(ans) from itertools import combinations N = int(input()) N int(input()) int input() input tuple(map(int, input().split())) for _ in range(N) for _ in range(N) _ range(N) range N for _ in range(N) tuple(map(int, input().split())) tuple map(int, input().split()) map int input().split() ().split () input split l = [tuple(map(int, input().split())) for _ in range(N)] l [tuple(map(int, input().split())) for _ in range(N)] i for i in l for i in l i l for i in l i t = {i for i in l} t if N==1 or N==2:
    print(1)
else:
    ans = N
    for i in range(N):
        for j, k in combinations([l[j] for j in range(N) if j!=i], 2):
            x1, y1 = j
            x2, y2 = k
            x, y = x1-x2, y1-y2

            b = 1
            for m in range(N):
                if i==m:continue
                x3, y3 = l[m]
                if not (x3-x, y3-y) in t:
                    b += 1
            ans = min(ans, b)
    print(ans) N==1 or N==2 N==1 N 1 N==2 N 2 print(1) print 1 ans = N ans N for i in range(N):
        for j, k in combinations([l[j] for j in range(N) if j!=i], 2):
            x1, y1 = j
            x2, y2 = k
            x, y = x1-x2, y1-y2

            b = 1
            for m in range(N):
                if i==m:continue
                x3, y3 = l[m]
                if not (x3-x, y3-y) in t:
                    b += 1
            ans = min(ans, b)
     i range(N) range N for j, k in combinations([l[j] for j in range(N) if j!=i], 2):
            x1, y1 = j
            x2, y2 = k
            x, y = x1-x2, y1-y2

            b = 1
            for m in range(N):
                if i==m:continue
                x3, y3 = l[m]
                if not (x3-x, y3-y) in t:
                    b += 1
            ans = min(ans, b)
     j k combinations([l[j] for j in range(N) if j!=i], 2) combinations [l[j] for j in range(N) if j!=i] 2 x1, y1 = j x1 j y1 x2, y2 = k x2 k y2 x, y = x1-x2, y1-y2 x x1-x2 x1 x2 y y1-y2 y1 y2 b = 1 b 1 for m in range(N):
                if i==m:continue
                x3, y3 = l[m]
                if not (x3-x, y3-y) in t:
                    b += 1
             m range(N) range N if i==m:continue
                 i==m i m x3, y3 = l[m] x3 l[m] l m y3 if not (x3-x, y3-y) in t:
                    b += 1
             not (x3-x, y3-y) in t (x3-x, y3-y) in t (x3-x, y3-y) x3-x x3 x y3-y y3 y t b += 1 b 1 ans = min(ans, b) ans min(ans, b) min ans b print(ans) print ans N = int(input()) int(input()) N x1, y1 = j j x1 y3 = l[m] l[m] y3 ans = N N ans t = {i for i in l} t ans = min(ans, b) min(ans, b) ans b = 1 1 b b += 1 1 b y2 = k k y2 l = [tuple(map(int, input().split())) for _ in range(N)] [tuple(map(int, input().split())) for _ in range(N)] l y = x1-x2, y1-y2 y1-y2 y y1 = j j y1 x2, y2 = k k x2 x, y = x1-x2, y1-y2 x1-x2 x x3, y3 = l[m] l[m] x3
from itertools import combinations

N = int(input())
l = [tuple(map(int, input().split())) for _ in range(N)]
t = {i for i in l}

if N==1 or N==2:
    print(1)
else:
    ans = N
    for i in range(N):
        for j, k in combinations([l[j] for j in range(N) if j!=i], 2):
            x1, y1 = j
            x2, y2 = k
            x, y = x1-x2, y1-y2

            b = 1
            for m in range(N):
                if i==m:continue
                x3, y3 = l[m]
                if not (x3-x, y3-y) in t:
                    b += 1
            ans = min(ans, b)
    print(ans)
