#include<bits/stdc++.h>

using namespace std;
long long MOD=1000000007;
long long MOD2=998244353;

int N,Ta,Ao;
int d[2][101010];
vector<vector<int>> G(101010);

void dfs(int v,int p,int flag){
  for(int u:G[v]){
    if(u==p) continue;
    d[flag][u]=d[flag][v]+1;
    dfs(u,v,flag);
  }
}

int main(){
  cin>>N>>Ta>>Ao; Ta--,Ao--;
  for(int i=0;i<N-1;i++){
    int A,B; cin>>A>>B; A--,B--;
    G[A].push_back(B);
    G[B].push_back(A);
  }
  d[0][Ta]=d[1][Ao]=0;
  dfs(Ta,-1,0);
  dfs(Ao,-1,1);
  int ans=0;
  for(int i=0;i<N;i++){
    if(d[0][i]<d[1][i]){
      ans=max(ans,d[1][i]-1);
    }
  }
  cout<<ans<<endl;
  return 0;
}
