N = gets.to_i graph = Array.new(N) { [] } (N - 1).times do u, v = gets.split.map { |s| s.to_i - 1} graph[u] << v graph[v] << u end depth = [nil] * N depth[0] = 0 stack = [0] while (u = stack.pop) graph[u].each do |v| next if depth[v] depth[v] = depth[u] + 1 stack << v end end path = [] visited = [false] * N dfs = ->u { visited[u] = true graph[u].each do |v| next if visited[v] path << v dfs[v] path << u end } dfs[0] mode = -1 visited = [false] * N ans = 4 u = path[0] visited[u] = true path[1..].each do |v| next if visited[v] or (depth[u] <=> depth[v]) != mode visited[v] = true mode = -mode ans += 1 u = v end puts ans