N = int(input())
graph = []
for _ in range(N):
    x, y = map(int, input().split())
    graph.append([x, y])
if N == 1:
    print(1)
    exit()
ans = float('inf')
for i in range(N):
    for j in range(N):
        if i == j:
            continue
        p = graph[i][0] - graph[j][0]
        q = graph[i][1] - graph[j][1]
        vec_cnt = 0
        for k in range(N):
            for l in range(N):
                if p == graph[k][0] - graph[l][0] and q == graph[k][1] - graph[l][1]:
                    vec_cnt += 1
        ans = min(ans, N - vec_cnt)
print(ans) N = int(input()) N int(input()) int input() input graph = [] graph [] for _ in range(N):
    x, y = map(int, input().split())
    graph.append([x, y]) _ range(N) range N x, y = map(int, input().split()) x map(int, input().split()) map int input().split() ().split () input split y graph.append([x, y]) graph.append graph append [x, y] x y if N == 1:
    print(1)
    exit() N == 1 N 1 print(1) print 1 exit() exit ans = float('inf') ans float('inf') float 'inf' for i in range(N):
    for j in range(N):
        if i == j:
            continue
        p = graph[i][0] - graph[j][0]
        q = graph[i][1] - graph[j][1]
        vec_cnt = 0
        for k in range(N):
            for l in range(N):
                if p == graph[k][0] - graph[l][0] and q == graph[k][1] - graph[l][1]:
                    vec_cnt += 1
        ans = min(ans, N - vec_cnt) i range(N) range N for j in range(N):
        if i == j:
            continue
        p = graph[i][0] - graph[j][0]
        q = graph[i][1] - graph[j][1]
        vec_cnt = 0
        for k in range(N):
            for l in range(N):
                if p == graph[k][0] - graph[l][0] and q == graph[k][1] - graph[l][1]:
                    vec_cnt += 1
        ans = min(ans, N - vec_cnt) j range(N) range N if i == j:
            continue
         i == j i j continue p = graph[i][0] - graph[j][0] p graph[i][0] - graph[j][0] graph[i][0] [i] graph i 0 graph[j][0] [j] graph j 0 q = graph[i][1] - graph[j][1] q graph[i][1] - graph[j][1] graph[i][1] [i] graph i 1 graph[j][1] [j] graph j 1 vec_cnt = 0 vec_cnt 0 for k in range(N):
            for l in range(N):
                if p == graph[k][0] - graph[l][0] and q == graph[k][1] - graph[l][1]:
                    vec_cnt += 1
         k range(N) range N for l in range(N):
                if p == graph[k][0] - graph[l][0] and q == graph[k][1] - graph[l][1]:
                    vec_cnt += 1
         l range(N) range N if p == graph[k][0] - graph[l][0] and q == graph[k][1] - graph[l][1]:
                    vec_cnt += 1
         p == graph[k][0] - graph[l][0] and q == graph[k][1] - graph[l][1] p == graph[k][0] - graph[l][0] p graph[k][0] - graph[l][0] graph[k][0] [k] graph k 0 graph[l][0] [l] graph l 0 q == graph[k][1] - graph[l][1] q graph[k][1] - graph[l][1] graph[k][1] [k] graph k 1 graph[l][1] [l] graph l 1 vec_cnt += 1 vec_cnt 1 ans = min(ans, N - vec_cnt) ans min(ans, N - vec_cnt) min ans N - vec_cnt N vec_cnt print(ans) print ans ans = min(ans, N - vec_cnt) min(ans, N - vec_cnt) ans graph = [] [] graph p = graph[i][0] - graph[j][0] graph[i][0] - graph[j][0] p ans = float('inf') float('inf') ans q = graph[i][1] - graph[j][1] graph[i][1] - graph[j][1] q vec_cnt = 0 0 vec_cnt vec_cnt += 1 1 vec_cnt N = int(input()) int(input()) N y = map(int, input().split()) map(int, input().split()) y x, y = map(int, input().split()) map(int, input().split()) x
N = int(input())
graph = []
for _ in range(N):
    x, y = map(int, input().split())
    graph.append([x, y])
if N == 1:
    print(1)
    exit()
ans = float('inf')
for i in range(N):
    for j in range(N):
        if i == j:
            continue
        p = graph[i][0] - graph[j][0]
        q = graph[i][1] - graph[j][1]
        vec_cnt = 0
        for k in range(N):
            for l in range(N):
                if p == graph[k][0] - graph[l][0] and q == graph[k][1] - graph[l][1]:
                    vec_cnt += 1
        ans = min(ans, N - vec_cnt)
print(ans)