


from __future__ import annotations

import typing
from collections import Counter

def 			lowerCAmelCase__					(     a__:						int			)    ->						typing.Counter[int]:


							'''simple docstring'''





							_UpperCAmelCase											=     Counter()
							for base in range(1     ,    max_perimeter + 1			):
														for perpendicular in range(a__     ,    max_perimeter + 1			):
																					_UpperCAmelCase											=     (base * base + perpendicular * perpendicular) ** 0.5
																					if hypotenuse == int(a__			):
																												_UpperCAmelCase											=     int(base + perpendicular + hypotenuse			)
																												if perimeter > max_perimeter:
																																			continue
																												triplets[perimeter] += 1
							return triplets

def 			lowerCAmelCase__					(     a__:						int = 1_0_0_0			)    ->						int:


							'''simple docstring'''





							_UpperCAmelCase											=     pythagorean_triple(a__			)
							return triplets.most_common(1			)[0][0]


if __name__ == "__main__":
		print(f'''Perimeter {solution()} has maximum solutions''')




from __future__ import annotations

def 			lowerCAmelCase__					(     a__:						str     ,    a__:						str			)    ->						bool:


							'''simple docstring'''





							_UpperCAmelCase											=     get_failure_array(a__			)

							# 2) Step through text searching for pattern
							_UpperCAmelCase						,			_UpperCAmelCase											=     0, 0  # index into text, pattern
							while i < len(a__			):
														if pattern[j] == text[i]:
																					if j == (len(a__			) - 1):
																												return True
																					j += 1

														# if this is a prefix in our pattern
														# just go back far enough to continue
														elif j > 0:
																					_UpperCAmelCase											=     failure[j - 1]
																					continue
														i += 1
							return False

def 			lowerCAmelCase__					(     a__:						str			)    ->						list[int]:


							'''simple docstring'''





							_UpperCAmelCase											=     [0]
							_UpperCAmelCase											=     0
							_UpperCAmelCase											=     1
							while j < len(a__			):
														if pattern[i] == pattern[j]:
																					i += 1
														elif i > 0:
																					_UpperCAmelCase											=     failure[i - 1]
																					continue
														j += 1
														failure.append(a__			)
							return failure


if __name__ == "__main__":
		# Test 1)
		lowerCAmelCase__    :List[Any]       =				'''abc1abc12'''
		lowerCAmelCase__    :Optional[int]       =				'''alskfjaldsabc1abc1abc12k23adsfabcabc'''
		lowerCAmelCase__    :int       =				'''alskfjaldsk23adsfabcabc'''
		assert kmp(pattern, texta) and not kmp(pattern, texta)

		# Test 2)
		lowerCAmelCase__    :List[str]       =				'''ABABX'''
		lowerCAmelCase__    :int       =				'''ABABZABABYABABX'''
		assert kmp(pattern, text)

		# Test 3)
		lowerCAmelCase__    :int       =				'''AAAB'''
		lowerCAmelCase__    :Any       =				'''ABAAAAAB'''
		assert kmp(pattern, text)

		# Test 4)
		lowerCAmelCase__    :Union[str, Any]       =				'''abcdabcy'''
		lowerCAmelCase__    :Any       =				'''abcxabcdabxabcdabcdabcy'''
		assert kmp(pattern, text)

		# Test 5)
		lowerCAmelCase__    :List[Any]       =				'''aabaabaaa'''
		assert get_failure_array(pattern) == [0, 1, 0, 1, 2, 3, 4, 5, 2]
