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

vector<int> E[100005];
int d_u[100005];
int d_v[100005];

void dfs_u(int V, int p){
	if(p!=-1)d_u[V]=d_u[p]+1;
	for(int u:E[V]){
		if(u==p) continue;
		dfs_u(u, V);
	}
}

void dfs_v(int V, int p){
	if(p!=-1)d_v[V]=d_v[p]+1;
	for(int u:E[V]){
		if(u==p) continue;
		dfs_v(u, V);
	}
}

int main(void) {
  int n, u, v;
  
  cin >> n >> u >> v; u--; v--;

  int a, b;
  for(int i=0;i<n-1;i++) {
    cin >> a >> b; a--; b--;
    E[a].push_back(b);
    E[b].push_back(a);
  }

  dfs_u(u, -1);
  dfs_v(v, -1);

  int ans=0;
  for(int i=0;i<n;i++) {
    if(d_u[i]<d_v[i]) ans = max(ans, d_v[i]);
  }
  
  cout << ans-1 << endl;

  return (0);
}
