n, u, v = gets.split.map(&:to_i)
nodes = Array.new(n + 1) { [] }
$stdin.read.split.each_slice(2) do |a, b|
  a = a.to_i
  b = b.to_i
  nodes[a] << b
  nodes[b] << a
end

m = 0
u_pos = [u]
v_pos = [v]
loop do
  u_pos -= v_pos
  break if u_pos.empty?
  
  u_pos = u_pos.flat_map { |pos| nodes[pos] }
  u_pos.uniq!

  u_pos -= v_pos
  break if u_pos.empty?

  m += 1
  
  v_pos = v_pos.flat_map { |pos| nodes[pos] -= [pos] }
  v_pos.uniq!
end

puts m
