



from typing import Optional

from .. import Features, NamedSplit
from ..packaged_modules.text.text import Text
from ..utils.typing import NestedDataStructureLike, PathLike
from .abc import AbstractDatasetReader

class 				snake_case__(__lowerCAmelCase      ):

					"""simple docstring"""






					def __init__(							self :     Dict				,       SCREAMING_SNAKE_CASE :     NestedDataStructureLike[PathLike]				,       SCREAMING_SNAKE_CASE :     Optional[NamedSplit] = None				,       SCREAMING_SNAKE_CASE :     Optional[Features] = None				,       SCREAMING_SNAKE_CASE :     str = None				,       SCREAMING_SNAKE_CASE :     bool = False				,       SCREAMING_SNAKE_CASE :     bool = False				,       SCREAMING_SNAKE_CASE :     Optional[int] = None				,       **SCREAMING_SNAKE_CASE :     Tuple				,       ):
								super().__init__(
								    lowerCamelCase__				,       split=lowerCamelCase__				,       features=lowerCamelCase__				,       cache_dir=lowerCamelCase__				,       keep_in_memory=lowerCamelCase__				,       streaming=lowerCamelCase__				,       num_proc=lowerCamelCase__				,       **lowerCamelCase__				,       )
								lowercase__					:   Optional[Any]													=					path_or_paths if isinstance(lowerCamelCase__				,       lowerCamelCase__					) else {self.split: path_or_paths}
								lowercase__					:   Optional[Any]													=					Text(
								    cache_dir=lowerCamelCase__				,       data_files=lowerCamelCase__				,       features=lowerCamelCase__				,       **lowerCamelCase__				,       )







					def 			snake_case					(							self :     Any					):






								if self.streaming:
											lowercase__					:   Any													=					self.builder.as_streaming_dataset(split=self.split					)
								# Build regular (map-style) dataset
								else:
											lowercase__					:   Union[str, Any]													=					None
											lowercase__					:   List[str]													=					None
											lowercase__					:   Optional[int]													=					None
											lowercase__					:   Tuple													=					None

											self.builder.download_and_prepare(
											    download_config=lowerCamelCase__				,       download_mode=lowerCamelCase__				,       verification_mode=lowerCamelCase__				,       base_path=lowerCamelCase__				,       num_proc=self.num_proc				,       )
											lowercase__					:   Tuple													=					self.builder.as_dataset(
											    split=self.split				,       verification_mode=lowerCamelCase__				,       in_memory=self.keep_in_memory					)
								return dataset









from collections import Counter
from timeit import timeit


def  __lowerCamelCase (       lowerCamelCase__ = ""					,			):

				"""simple docstring"""


				return sum(c % 2 for c in Counter(input_str.replace(" "					,			""						).lower()						).values()						) < 2


def  __lowerCamelCase (       lowerCamelCase__ = ""						):

				"""simple docstring"""


				if len(lowerCamelCase__						) == 0:
								return True
				lowercase__					:   str													=					input_str.replace(" "					,			""						).lower()
				# character_freq_dict: Stores the frequency of every character in the input string
				lowercase__					:   dict[str, int]													=					{}

				for character in lower_case_input_str:
								lowercase__					:   List[Any]													=					character_freq_dict.get(lowerCamelCase__					,			0						) + 1
				lowercase__					:   List[Any]													=					0

				for character_count in character_freq_dict.values():
								if character_count % 2:
												odd_char += 1
				if odd_char > 1:
								return False
				return True


def  __lowerCamelCase (       lowerCamelCase__ = ""						):

				"""simple docstring"""


				print("\nFor string = "					,			lowerCamelCase__					,			":"						)
				print(
				    "> can_string_be_rearranged_as_palindrome_counter()"					,			"\tans ="					,			can_string_be_rearranged_as_palindrome_counter(lowerCamelCase__						)					,			"\ttime ="					,			timeit(
				        "z.can_string_be_rearranged_as_palindrome_counter(z.check_str)"					,			setup="import __main__ as z"					,			)					,			"seconds"					,			)
				print(
				    "> can_string_be_rearranged_as_palindrome()"					,			"\tans ="					,			can_string_be_rearranged_as_palindrome(lowerCamelCase__						)					,			"\ttime ="					,			timeit(
				        "z.can_string_be_rearranged_as_palindrome(z.check_str)"					,			setup="import __main__ as z"					,			)					,			"seconds"					,			)


if __name__ == "__main__":
				lowerCAmelCase__					  =  input(
				    '''Enter string to determine if it can be rearranged as a palindrome or not: '''
				).strip()
				benchmark(check_str)
				lowerCAmelCase__					  =  can_string_be_rearranged_as_palindrome_counter(check_str)
				print(f'''{check_str} can {"" if status else "not "}be rearranged as a palindrome''')




