str = gets.split
N,u,v = str[0].to_i, str[1].to_i, str[2].to_i

a = Array.new(N+1,-1)
a[u] = 0
b = Array.new(N+1,-1)
b[v] = 0

c = Array.new(N+1){Array.new(0)}
d = Array.new(N+1){Array.new(0)}
for ii in 1...N do
    str = gets.split
    e,f = str[0].to_i, str[1].to_i
    c[e].push(f)
    c[f].push(e)
    d[e].push(f)
    d[f].push(e)
end

g = Array.new(2){Array.new(0)}
while !c[u].empty?
    x = c[u].pop
    a[u] = 0
    g[1].push(x)
end
i = 1
while !g[i%2].empty?
    j = i%2
    k = (j+1)%2
    while !g[j].empty?
        x = g[j].pop
        y = a[x]
        a[x] = y == -1 ? i : y
        while !c[x].empty?
            g[k].push(c[x].pop)
        end
    end
    i += 1
end

g[0].clear
g[1].clear
while !d[v].empty?
    x = d[v].pop
    b[v] = 0
    g[1].push(x)
end
i = 1
while !g[i%2].empty?
    j = i%2
    k = (j+1)%2
    while !g[j].empty?
        x = g[j].pop
        y = b[x]
        b[x] = y == -1 ? i : y
        while !d[x].empty?
            g[k].push(d[x].pop)
        end
    end
    i += 1
end

answer = 0
for i in 1..N do
    if a[i] < b[i]
        answer = answer < b[i] ? b[i] : answer
    end
end
answer -= 1
puts answer