


'''simple docstring'''






# A Bipartite Graph is a graph whose vertices can be divided into two independent sets,
# U and V such that every edge (u, v) either connects a vertex from U to V or a vertex
# from V to U. In other words, for every edge (u, v), either u belongs to U and v to V,
# or u belongs to V and v to U. We can also say that there is no edge that connects
# vertices of same set.




def  _snake_case       (					A	)						->   int:
							lowerCAmelCase__	       =     [False] * len(__A	)
							lowerCAmelCase__	       =     [-1] * len(__A	)

							def dfs(A			,   A	):
														lowerCAmelCase__	       =     True
														lowerCAmelCase__	       =     c
														for u in graph[v]:
																					if not visited[u]:
																												dfs(__A			,   1 - c	)

							for i in range(len(__A	)	):
														if not visited[i]:
																					dfs(__A			,   0	)

							for i in range(len(__A	)	):
														for j in graph[i]:
																					if color[i] == color[j]:
																												return False

							return True


# Adjacency list of graph
__UpperCAmelCase       =							{0: [1, 3], 1: [0, 2], 2: [1, 3], 3: [0, 2], 4: []}






print(check_bipartite_dfs(graph))



'''simple docstring'''






def  _snake_case       (					A = 10			,   A = 22	)						->   int:
							lowerCAmelCase__	       =     range(1			,   A	)
							lowerCAmelCase__	       =     range(1			,   A	)
							return sum(
							    1 for power in powers for base in bases if len(str(base**power	)	) == power	)


if __name__ == "__main__":
		print(f"""{solution(10, 22) = }""")