N,M = gets.split(' ').map(&:to_i)
@xy = M.times.map{ gets.split(' ').map(&:to_i) }

@xy.sort_by!{|x| x[0]}

@parent = Array.new(N+1,&:itself)
#puts @parent

def anc(x)
  #puts "x=#{x}"
  #puts "parent[2]=#{@parent[2]}"
  if @parent[x]==x
    return x
  else
    #puts "x=#{x}"
    x=anc(@parent[x])
  end
  return x
end


M.times do |i|
  x=@xy[i][0]
  y=@xy[i][1]
  x_can = anc(x)
  y_can = anc(y)
  #puts "x_can=#{x_can},y_can=#{y_can}"
  if x_can<y_can
    senzo=x_can
  else
    senzo=y_can
  end
  @parent[x]=senzo
  @parent[y]=senzo
  #puts @parent
  #puts "aaa"
end
ans = 0
for i in 0..N-1
  cnt = N-i
  senzo = anc(cnt)
  @parent[senzo] = senzo
  if senzo==cnt
    ans+=1
  end
end
puts ans