N = int(input()) G = [[] for i in range(N)] deg = [0] * N parent = [-1] * N dp = [[0 for j in range(3)] for i in range(N)] for i in range(N - 1): A, B = [int(i) for i in input().split()] G[A - 1].append(B - 1) G[B - 1].append(A - 1) for i in range(N - 1): C, D = [int(i) for i in input().split()] deg[C - 1] += 1 deg[D - 1] += 1 stack = [0] stack2 = [] parent[0] = 0 while stack: v = stack.pop() stack2.append(v) for to in G[v]: if parent[to] != -1: continue parent[to] = v stack.append(to) while stack2: v = stack2.pop() for to in G[v]: if to == parent[v]: continue deg[v] += deg[to] nxt = [1000000000] * 3 for i in range(3): for j in range(3 - i): nxt[i + j] = min(nxt[i + j], dp[v][i] + dp[to][j] + (deg[to] % 2 != j % 2)) for i in range(3): dp[v][i] = nxt[i] print(min(dp[0][0], dp[0][2]) + N - 1)