#include <bits/stdc++.h>
using namespace std;
vector<long long> g[200100], vec, tmp;
long long dist1[200100], dist[200100], maxdepth[200100];
long long visited[200100];
void dfs(long long src, long long dest) {
  if (src == dest) {
    tmp.push_back(dest);
    vec = tmp;
    tmp.pop_back();
    return;
  }
  visited[src] = 1;
  long long i;
  tmp.push_back(src);
  for (i = 0; i < g[src].size(); i++) {
    if (!visited[g[src][i]]) dfs(g[src][i], dest);
  }
  tmp.pop_back();
  visited[src] = 0;
}
void dfs2(long long src, bool flag) {
  long long i;
  visited[src] = 1;
  for (i = 0; i < g[src].size(); i++)
    if (!visited[g[src][i]]) {
      if (!flag)
        dist[g[src][i]] = dist[src] + 1;
      else
        dist1[g[src][i]] = dist1[src] + 1;
      dfs2(g[src][i], flag);
    }
  visited[src] = 0;
}
long long dfs3(long long src) {
  long long i;
  maxdepth[src] = 1;
  visited[src] = 1;
  for (i = 0; i < g[src].size(); i++)
    if (!visited[g[src][i]])
      maxdepth[src] = max(maxdepth[src], dfs3(g[src][i]) + 1);
  return maxdepth[src];
}
int main() {
  long long n, x, i, j, k, l, m;
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> x;
  for (i = 0; i < n - 1; i++) {
    cin >> j >> k;
    g[j].push_back(k);
    g[k].push_back(j);
  }
  dfs(1, x);
  dist[1] = dist1[x] = 0;
  dfs2(1, 0);
  dfs2(x, 1);
  dfs3(1);
  long long ans = dist[x] + maxdepth[x] - 1;
  for (i = 0; i < vec.size(); i++) {
    if (dist1[vec[i]] < dist[vec[i]]) {
      ans = max(ans, maxdepth[vec[i]] - 1 + (dist[vec[i]]));
    }
  }
  cout << 2 * ans << '\n';
  return 0;
}
