def find_next(number, p, q, x, y, load, max)
  number.times do |n|
    next if load.include?(n)
    # puts "load.last: #{load.last}"
    # puts "#{x[load.last]}, #{y[load.last]}"
    # puts "#{x[n]}, #{y[n]}"
    if((x[load.last] - p == x[n]) && (y[load.last] - q == y[n]))
      load.push(n)
      # puts "find next"
      # puts n
      max = load.length if max < load.length
      # puts "max: #{max}"
      if max == find_next(number, p, q, x, y, load, max)
        load.pop
      end
    end
  end
  return max
end

N = gets.to_i
x, y = N.times.map{gets.split.map(&:to_i)}.transpose

hash = Hash.new

N.times do |i|
  (i+1...N).each do |j|
    # puts "compare #{i} and #{j}"
    new_x = x[i] - x[j]
    new_y = y[i] - y[j]
    hash["#{new_x} #{new_y}"] ||= 0
    hash["#{new_x} #{new_y}"] += 1
  end
end

hash.sort{|a, b| b[1] <=> a[1]}
# puts hash
max = 0
hash.each do |key, value|
  p, q = key.split.map(&:to_i)
  # puts "p: #{p}, q: #{q}"
  N.times do |i|
    # puts "i:#{i}"
    # i からスタート
    load = Array.new
    load.push(i)
    tmp_max = 0
    tmp_max = find_next(N, p, q, x, y, load, tmp_max)
    # puts "tmp_max #{tmp_max}"
    max = tmp_max if max < tmp_max
  end
end

puts N - max
