



'''simple docstring'''



from __future__ import annotations
def        UpperCAmelCase (    A	:					int					):
							SCREAMING_SNAKE_CASE       :   Union[str, Any]         =      2
							SCREAMING_SNAKE_CASE       :   Any         =      []
							while i * i <= n:
														if n % i:
																					i += 1
														else:
																					n //= i
																					factors.append(A					)
							if n > 1:
														factors.append(A					)
							return factors


if __name__ == "__main__":
							import doctest

							doctest.testmod()









'''simple docstring'''



from collections import defaultdict
def        UpperCAmelCase (    A	:					int					):
							SCREAMING_SNAKE_CASE       :   List[Any]         =      1
							SCREAMING_SNAKE_CASE       :   Dict         =      True
							for v in tree[start]:
														if v not in visited:
																					ret += dfs(A					)
							if ret % 2 == 0:
														cuts.append(A					)
							return ret
def        UpperCAmelCase (    ):
							dfs(1					)


if __name__ == "__main__":
							lowerCAmelCase_      ,				lowerCAmelCase_  :							Dict             =    10, 9
							lowerCAmelCase_  :							Dict             =    defaultdict(list)
							lowerCAmelCase_  :							dict[int, bool]             =    {}
							lowerCAmelCase_  :							list[int]             =    []
							lowerCAmelCase_  :							Optional[Any]             =    0
							lowerCAmelCase_  :							Dict             =    [(2, 1), (3, 1), (4, 3), (5, 2), (6, 1), (7, 2), (8, 6), (9, 8), (10, 8)]
							for u, v in edges:
														tree[u].append(v)
														tree[v].append(u)
							even_tree()
							print(len(cuts) - 1)




