#隣接リスト作成テンプレ
N,u,v=list(map(int,input().split()))#N:ノード数
#隣接リスト作成
A={}
for i in range(N):
    A[i+1]=[]
#print(A)

#隣接リストデータインプット
for i in range(N-1):
    a,b=list(map(int,input().split()))
    A[a].append(b)
    A[b].append(a)
#print(A)

#print(u,v)

#Bからpに関わる連結を削除する
def del_connect(p,B):
    B[p] = []
    for i in B:
        if p in B[i]:
            B[i].remove(p)#ここでAも変化してしまう←対処
    
#ダイクストラ法による２点間の距離算出関数
def distance(a,b):
    #print("-- {},{}".format(a,b))
    dist = 0
    B = {}
    for i in A:
        B[i] = A[i].copy()
    #今いる点リスト
    p_list = [a]
    #移動後の点リスト
    q_list = []
    while b not in p_list:
        for i in p_list:#今いる点全てについて
            for j in B[i]:#次に行ける点を全て調べ
                q_list.append(j)#q_listにリストアップする
        #print("q_list",q_list)
        #今いる点に関わる連結をBから削除する
        for i in p_list:
            del_connect(i,B)
        #次に行ける点に移動する
        p_list = q_list.copy()
        #print("p_list:",p_list)
        q_list = []
        dist += 1
        
        #print("A",A)
    #print("c={}".format(dist))
    return dist

#print("A",A)
#まず、葉をリストアップする
leaves = []
for i in A:
    if len(A[i]) == 1:
        leaves.append(i)
#print("Leaves are",leaves)
#print("u",u,"v",v)

#u:逃げ（先）、v:鬼(後)
d = 0
for l in leaves:
    #print("---- l={}".format(l))
    u_dist = distance(u,l)
    v_dist = distance(v,l)

    if u_dist < v_dist and v_dist > d:#葉の中で逃げが先に到達でき、且つ最大のものを求める。
        d = v_dist
    #print("l={}.d={}".format(l,d))
#print("d",d)
    
print(d-1)