


'''simple docstring'''


from __future__ import annotations

import math
from collections import Counter
from string import ascii_lowercase







def      snake_case_  (    SCREAMING_SNAKE_CASE__	):







				"""simple docstring"""





				_SCREAMING_SNAKE_CASE						,			_SCREAMING_SNAKE_CASE					:			List[Any]							= analyze_text(SCREAMING_SNAKE_CASE__	)
				_SCREAMING_SNAKE_CASE					:			Optional[int]							= list(""" """ + ascii_lowercase	)
				# what is our total sum of probabilities.
				_SCREAMING_SNAKE_CASE					:			List[Any]							= sum(single_char_strings.values()	)

				# one length string
				_SCREAMING_SNAKE_CASE					:			Dict							= 0
				# for each alpha we go in our dict and if it is in it we calculate entropy
				for ch in my_alphas:
								if ch in single_char_strings:
												_SCREAMING_SNAKE_CASE					:			Optional[int]							= single_char_strings[ch]
												_SCREAMING_SNAKE_CASE					:			Any							= my_str / all_sum
												my_fir_sum += prob * math.loga(SCREAMING_SNAKE_CASE__	)  # entropy formula.

    # print entropy
				print(f"""{round(-1 * my_fir_sum	):.1f}"""	)

				# two len string
				_SCREAMING_SNAKE_CASE					:			List[str]							= sum(two_char_strings.values()	)
				_SCREAMING_SNAKE_CASE					:			str							= 0
				# for each alpha (two in size) calculate entropy.
				for cha in my_alphas:
								for cha in my_alphas:
												_SCREAMING_SNAKE_CASE					:			Tuple							= cha + cha
												if sequence in two_char_strings:
																_SCREAMING_SNAKE_CASE					:			int							= two_char_strings[sequence]
																_SCREAMING_SNAKE_CASE					:			Tuple							= int(SCREAMING_SNAKE_CASE__	) / all_sum
																my_sec_sum += prob * math.loga(SCREAMING_SNAKE_CASE__	)

    # print second entropy
				print(f"""{round(-1 * my_sec_sum	):.1f}"""	)

				# print the difference between them
				print(f"""{round((-1 * my_sec_sum) - (-1 * my_fir_sum)	):.1f}"""	)







def      snake_case_  (    SCREAMING_SNAKE_CASE__	):







				"""simple docstring"""





				_SCREAMING_SNAKE_CASE					:			List[Any]							= Counter()  # type: ignore
				_SCREAMING_SNAKE_CASE					:			str							= Counter()  # type: ignore
				single_char_strings[text[-1]] += 1

				# first case when we have space at start.
				two_char_strings[" " + text[0]] += 1
				for i in range(0				, len(SCREAMING_SNAKE_CASE__	) - 1	):
								single_char_strings[text[i]] += 1
								two_char_strings[text[i : i + 2]] += 1
				return single_char_strings, two_char_strings







def      snake_case_  (    ):







				"""simple docstring"""





				import doctest

				doctest.testmod()
				# text = (
				#     "Had repulsive dashwoods suspicion sincerity but advantage now him. Remark "
				#     "easily garret nor nay. Civil those mrs enjoy shy fat merry. You greatest "
				#     "jointure saw horrible. He private he on be imagine suppose. Fertile "
				#     "beloved evident through no service elderly is. Blind there if every no so "
				#     "at. Own neglected you preferred way sincerity delivered his attempted. To "
				#     "of message cottage windows do besides against uncivil.  Delightful "
				#     "unreserved impossible few estimating men favourable see entreaties. She "
				#     "propriety immediate was improving. He or entrance humoured likewise "
				#     "moderate. Much nor game son say feel. Fat make met can must form into "
				#     "gate. Me we offending prevailed discovery. "
				# )

				# calculate_prob(text)


if __name__ == "__main__":
				main()








'''simple docstring'''


def      snake_case_  (    SCREAMING_SNAKE_CASE__	):







				"""simple docstring"""





				return "".join(chr(ord(SCREAMING_SNAKE_CASE__	) - 32	) if """a""" <= char <= """z""" else char for char in word	)


if __name__ == "__main__":
				from doctest import testmod

				testmod()




