n = int(input()) a = [] g = [[] for _ in range(2 * 10**5 - 1)] g_r = [[] for _ in range(2 * 10**5 - 1)] for _ in range(n): u, v = map(int, input().split()) a.append([u - 1, v - 1]) g[v - 1].append(u - 1) g_r[u - 1].append(v - 1) order = [] sw = [True for _ in range(2 * 10**5 - 1)] def dfs(s): sw[s] = False for i in g[s]: if sw[i]: dfs(i) order.append(s) dfs(v - 1) order_R = [] sw = [True for _ in range(2 * 10**5 - 1)] def dfs(s): sw[s] = False for i in g[s]: if sw[i]: dfs(i) order_R.append(s) dfs(order[len(order) - 1]) if len(order_R) != n: print(0) else: count = 0 z = set() x = order_R[0] y = order_R[-1] for i in range(len(order_R) - 1): if order_R[i] == y and order_R[i + 1] == x: count += 1 z.add(order_R[i]) z.add(y) if count < a.count([y, x]): print(len(z)) else: print(1)