require 'set'
require 'pp'

def step(pos)
    ans = Set.new
    pos.each do |node|
        ans += $adj[node]
    end
    return ans
end

N, u, v = gets.split.map &:to_i
edges = (N-1).times.map{ gets.split.map &:to_i }


$adj = Array.new(N + 1){ Set.new }
edges.each do |a, b|
    $adj[a] << b
    $adj[b] << a
end

takahashi_pos = Set.new([u])
aoki_pos = Set.new([v])

ans = 0
while true
    # pp [takahashi_pos, aoki_pos]
    takahashi_pos = step(takahashi_pos)
    break if (takahashi_pos - aoki_pos).empty?
    aoki_pos = step(aoki_pos)
    ans += 1
    break if (takahashi_pos - aoki_pos).empty?
end
p ans