#include<iostream>
#include<vector>
using namespace std;

int N,u,v;

void DFS(int p,int d=0,vector<vector<int>> &m,int s,vector<int> &dist){
  dist[p]=d;
  for(int i:m[p]){
    if(i==s){continue;}
    DFS(i,d+1,m,p);
  }
}

vector<int> calculate(int p,vector<vector<int>> &m){
  vector<int> dist(N);
  dfs(p,int d=0,m,int s=-1,dist)
  return dist;
}

int main(){
  int ans=0;
  cin>>N>>u>>v;
  vector<vector<int>> m(N,vector<int>(0));
  vector<int> ud(N),vd(N)
  
  for(int i=0;i<N;i++){
    int a,b;
    cin>>a>>b;
    m.at(a).push_back(b);
    m.at(b).push_back(a);
  }
  
  ud=calculate(u,m);
  vd=calculate(v,m);
  
  for(int i=0;i<ud.size();i++){
    if(ud.at(i)>vd.at(i)){
      ans=max(ans,ud.at(i));
    }
  }
  
  cout<<ans-1<<endl;
}
  