



'''simple docstring'''

def a_     (    __UpperCAmelCase					)				->					int:





			"""simple docstring"""







			if not isinstance(__lowerCamelCase				,							__lowerCamelCase					) or number < 0:
						raise ValueError('Input must be a non-negative integer'					)

			snake_case:    Optional[Any]      							=0
			while number:
						# This way we arrive at next set bit (next 1) instead of looping
						# through each bit and checking for 1s hence the
						# loop won't run 32 times it will only run the number of `1` times
						number &= number - 1
						count += 1
			return count


if __name__ == "__main__":
	import doctest

	doctest.testmod()









from __future__ import annotations

import math
from collections import Counter
from string import ascii_lowercase






def        __lowerCAmelCase		(	__lowerCamelCase						:     str						)	->    None:
					__lowerCAmelCase ,						__lowerCAmelCase						 =analyze_text(__lowerCamelCase						)
					__lowerCAmelCase						 =list(""" """ + ascii_lowercase						)
					# what is our total sum of probabilities.
					__lowerCAmelCase						 =sum(single_char_strings.values()						)

					# one length string
					__lowerCAmelCase						 =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:
															__lowerCAmelCase						 =single_char_strings[ch]
															__lowerCAmelCase						 =my_str / all_sum
															my_fir_sum += prob * math.loga(__lowerCamelCase						)  # entropy formula.

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

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

    # 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        __lowerCAmelCase		(	__lowerCamelCase						:     str						)	->    tuple[dict, dict]:
					__lowerCAmelCase						 =Counter()  # type: ignore
					__lowerCAmelCase						 =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(__lowerCamelCase						) - 1						):
										single_char_strings[text[i]] += 1
										two_char_strings[text[i : i + 2]] += 1
					return single_char_strings, two_char_strings






def        __lowerCAmelCase		(	)	->    str:
					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()




