# https://yukicoder.me/problems/no/1484 from collections import deque MAX_INT = 10 ** 18 def bfs(N, next_nodes, start): queue = deque() dists = [MAX_INT] * N queue.append(start) dists[start] = 0 while len(queue) > 0: v = queue.popleft() for w in next_nodes[v]: if dists[w] == MAX_INT: dists[w] = dists[v] + 1 queue.append(w) return dists def main(): N = int(input()) next_nodes = [[] for _ in range(N)] for _ in range(N - 1): a, b = map(int, input().split()) next_nodes[a - 1].append(b - 1) next_nodes[b - 1].append(a - 1) dists = bfs(N, next_nodes, 0) max_dist = -MAX_INT max_dist_node = -1 for i in range(N): if dists[i] > max_dist: max_dist = dists[i] max_dist_node = i dists = bfs(N, next_nodes, max_dist_node) m = max(dists) answer = 2 * (N - 1) - m print(answer) if __name__ == "__main__": main()