n, m = gets.split(' ').map{|s| s.to_i}
r = []
m.times{
  r << gets.split(' ').map{|s| s.to_i}
}

n.times{|i|
  r << [i + 1, i + 1]
}

r.each{|st|
  if st[0] != st[1]
    k0 = st[0]
    k1 = st[1]
    r.each{|st2|
      st2[0] = k0 if st2[0] == k1
      st2[1] = k0 if st2[1] == k1
    }
  end
}
puts (r.uniq.size - 1)