


'''simple docstring'''
from ...configuration_utils import PretrainedConfig
from ...utils import logging


__snake_case											=					logging.get_logger(__name__)

__snake_case											=					{
    """google/pegasus-large""": """https://huggingface.co/google/pegasus-large/resolve/main/config.json""",
    # See all PEGASUS models at https://huggingface.co/models?filter=pegasus
}
class        lowercase     (							__snake_case ):

		"""simple docstring"""

		_a   			=    'pegasus'
		_a   			=    ['past_key_values']
		_a   			=    {'num_attention_heads': 'encoder_attention_heads', 'hidden_size': 'd_model'}




		def __init__(		self   ,       UpperCamelCase_=50265   ,       UpperCamelCase_=1024   ,       UpperCamelCase_=12   ,       UpperCamelCase_=4096   ,       UpperCamelCase_=16   ,       UpperCamelCase_=12   ,       UpperCamelCase_=4096   ,       UpperCamelCase_=16   ,       UpperCamelCase_=0.0   ,       UpperCamelCase_=0.0   ,       UpperCamelCase_=True   ,       UpperCamelCase_=True   ,       UpperCamelCase_="gelu"   ,       UpperCamelCase_=1024   ,       UpperCamelCase_=0.1   ,       UpperCamelCase_=0.0   ,       UpperCamelCase_=0.0   ,       UpperCamelCase_=0.02   ,       UpperCamelCase_=0   ,       UpperCamelCase_=False   ,       UpperCamelCase_=0   ,       UpperCamelCase_=1   ,       UpperCamelCase_=1   ,       **UpperCamelCase_   ,       ):

							'''simple docstring'''


							UpperCamelCase__       :List[Any]							 =			vocab_size
							UpperCamelCase__       :Dict							 =			max_position_embeddings
							UpperCamelCase__       :Union[str, Any]							 =			d_model
							UpperCamelCase__       :List[Any]							 =			encoder_ffn_dim
							UpperCamelCase__       :Union[str, Any]							 =			encoder_layers
							UpperCamelCase__       :int							 =			encoder_attention_heads
							UpperCamelCase__       :Optional[Any]							 =			decoder_ffn_dim
							UpperCamelCase__       :List[str]							 =			decoder_layers
							UpperCamelCase__       :List[str]							 =			decoder_attention_heads
							UpperCamelCase__       :int							 =			dropout
							UpperCamelCase__       :List[Any]							 =			attention_dropout
							UpperCamelCase__       :Any							 =			activation_dropout
							UpperCamelCase__       :Dict							 =			activation_function
							UpperCamelCase__       :Optional[int]							 =			init_std
							UpperCamelCase__       :int							 =			encoder_layerdrop
							UpperCamelCase__       :List[Any]							 =			decoder_layerdrop
							UpperCamelCase__       :List[str]							 =			use_cache
							UpperCamelCase__       :int							 =			encoder_layers
							UpperCamelCase__       :int							 =			scale_embedding  # scale factor will be sqrt(d_model) if True
							super().__init__(
							    pad_token_id=a_   ,       eos_token_id=a_   ,       is_encoder_decoder=a_   ,       decoder_start_token_id=a_   ,       forced_eos_token_id=a_   ,       **a_   ,       )




		@property
		def    lowerCAmelCase__    (		self							):

							'''simple docstring'''


							return self.encoder_attention_heads




		@property
		def    lowerCAmelCase__    (		self							):

							'''simple docstring'''


							return self.d_model



'''simple docstring'''
from collections import Counter
from timeit import timeit


def       a				(      __a = ""			, )  ->     bool:



					'''simple docstring'''






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


def       a				(      __a = ""       )  ->     bool:



					'''simple docstring'''






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

					for character in lower_case_input_str:
										UpperCamelCase__       :Optional[int]							 =			character_freq_dict.get(__a			, 0       ) + 1
					UpperCamelCase__       :List[str]							 =			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       a				(      __a = ""       )  ->     None:



					'''simple docstring'''






					print('''\nFor string = '''			, __a			, ''':'''       )
					print(
					    '''> can_string_be_rearranged_as_palindrome_counter()'''			, '''\tans ='''			, can_string_be_rearranged_as_palindrome_counter(__a       )			, '''\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(__a       )			, '''\ttime ='''			, timeit(
					        '''z.can_string_be_rearranged_as_palindrome(z.check_str)'''			, setup='''import __main__ as z'''			, )			, '''seconds'''			, )


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