


"""simple docstring"""




def       a_ (	lowercase__ :str     ):
			__lowerCamelCase          =      [0] * len(lowercase__     )

			for i in range(1,			len(lowercase__     )     ):
						# use last results for better performance - dynamic programming
						__lowerCamelCase          =      prefix_result[i - 1]
						while j > 0 and input_string[i] != input_string[j]:
									__lowerCamelCase          =      prefix_result[j - 1]

						if input_string[i] == input_string[j]:
									j += 1
						__lowerCamelCase          =      j

			return prefix_result





def       a_ (	lowercase__ :str     ):
			return max(prefix_function(lowercase__     )     )


if __name__ == "__main__":
					import doctest

					doctest.testmod()








"""simple docstring"""




from collections import defaultdict





def       a_ (	lowercase__ :int     ):
			__lowerCamelCase          =      1
			__lowerCamelCase          =      True
			for v in tree[start]:
						if v not in visited:
									ret += dfs(lowercase__     )
			if ret % 2 == 0:
						cuts.append(lowercase__     )
			return ret





def       a_ (	):
			dfs(1     )


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




