N=gets.to_i
a=N.times.map{gets.split.map(&:to_i)}
p a
ans=Float::INFINITY
a.combination(2) do |s,t|
    p=(s[0]-t[0]).abs
    q=(s[1]-t[1]).abs
    next if p==0 && q==0
    flag=Array.new(N,false)
    marked=0
    cnt=0
    until marked==N
        cnt+=1
        cur=flag.index(false)
        flag[cur]=true
        marked+=1
        N.times do |i|
            next if flag[i]
            bool = ((p==0 && a[cur][0]==a[i][0]) && (q!=0 && (a[cur][1]-a[i][1])%q==0)) || ((p!=0 && (a[cur][0]-a[i][0])%p==0) && (q==0 && a[cur][1]==a[i][1])) || ((p!=0 && (a[cur][0]-a[i][0])%p==0) && (q!=0 && (a[cur][1]-a[i][1])%q==0) && ((a[cur][0]-a[i][0])/p==(a[cur][0]-a[i][0])/q))
            if bool 
                flag[i]=true
                marked+=1
            end
        end
    end
    ans= cnt<ans ? cnt : ans
end
puts ans
        
        