#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 21;
long long n, u, v, par, mx;
long long h[MAXN];
vector<int> adj[MAXN];
void dfs(int root, int pr = -1) {
  for (auto y : adj[root]) {
    if (y ^ pr) {
      h[y] = h[root] + 1;
      dfs(y, root);
      if (y == v) par = root;
    }
  }
}
void dfs_2(int root, int pr) {
  for (auto y : adj[root]) {
    if (y ^ pr) {
      mx = max(mx, h[y]);
      dfs(y, root);
    }
  }
}
int main() {
  cin >> n >> u >> v;
  for (int i = 1; i < n; i++) {
    int a, b;
    cin >> a >> b;
    adj[a].push_back(b);
    adj[b].push_back(a);
  }
  dfs(u);
  mx = h[v];
  dfs_2(v, par);
  if (mx % 2 == 0)
    cout << mx - 1 << '\n';
  else
    cout << mx << '\n';
  return 0;
}
