N=int(input())
if N==1:
  print(1)
  exit()
  
A=[list(map(int,input().split())) for i in range(N)]
B={}
for a,b in A:
  for c,d in A:
    e=a-c
    f=b-d
    if e!=0 or f!=0:
      if (e,f) in B:
        B[(e,f)]+=1
      else:
        B[(e,f)]=1
a=max(B.values())
print(N-a) N=int(input()) N int(input()) int input() input if N==1:
  print(1)
  exit()
   N==1 N 1 print(1) print 1 exit() exit list(map(int,input().split())) for i in range(N) for i in range(N) i range(N) range N for i in range(N) list(map(int,input().split())) list map(int,input().split()) map int input().split() ().split () input split A=[list(map(int,input().split())) for i in range(N)] A [list(map(int,input().split())) for i in range(N)] B={} B {} for a,b in A:
  for c,d in A:
    e=a-c
    f=b-d
    if e!=0 or f!=0:
      if (e,f) in B:
        B[(e,f)]+=1
      else:
        B[(e,f)]=1 a b A for c,d in A:
    e=a-c
    f=b-d
    if e!=0 or f!=0:
      if (e,f) in B:
        B[(e,f)]+=1
      else:
        B[(e,f)]=1 c d A e=a-c e a-c a c f=b-d f b-d b d if e!=0 or f!=0:
      if (e,f) in B:
        B[(e,f)]+=1
      else:
        B[(e,f)]=1 e!=0 or f!=0 e!=0 e 0 f!=0 f 0 if (e,f) in B:
        B[(e,f)]+=1
      else:
        B[(e,f)]=1 (e,f) in B (e,f) e f B B[(e,f)]+=1 B[(e,f)] B (e,f) e f 1 B[(e,f)]=1 B[(e,f)] B (e,f) e f 1 a=max(B.values()) a max(B.values()) max B.values() B.values B values print(N-a) print N-a N a a=max(B.values()) max(B.values()) a N=int(input()) int(input()) N A=[list(map(int,input().split())) for i in range(N)] [list(map(int,input().split())) for i in range(N)] A e=a-c a-c e f=b-d b-d f B={} {} B
N=int(input())
if N==1:
  print(1)
  exit()
  
A=[list(map(int,input().split())) for i in range(N)]
B={}
for a,b in A:
  for c,d in A:
    e=a-c
    f=b-d
    if e!=0 or f!=0:
      if (e,f) in B:
        B[(e,f)]+=1
      else:
        B[(e,f)]=1
a=max(B.values())
print(N-a)