#include <bits/stdc++.h>
using namespace std ;

#define int long long
const int N = 1e5 + 10 ;
vector<int> G[N] ;

void dfs(int start , int* v , int d = 0 , int parent = -1 ){
	v[start] = d ;
	for(auto i : G[start]){
		if(i == parent) continue ;
		dfs(i,v,d+1,start) ;
	}
}

int32_t main(){
	int n , u , v ;
	cin >> n >> u >> v ;
	u-- , v-- ;
	for(int i = 0 ; i < n - 1 ; i++){
		int f, s ;
		cin >>f >> s ;
		f-- , s-- ;
		G[f].push_back(s) ;
		G[s].push_back(f) ;
	}
	int v1[n] = {0} , v2[n] = {0} ;
	dfs(u,v1) ;
	dfs(v,v2) ;
	int ans = 0 ;
	for(int i = 0 ; i < n ; i++){
		if(v1[i] < v2[i]){
			ans = max(v1[i], ans) ;
		}
	}
	cout << ans;
	return 0 ;
}

