def      __lowerCAmelCase(		__UpperCAmelCase			):






	"""simple docstring"""





	return credit_card_number.startswith(('34', '35', '37', '4', '5', '6')			)


def      __lowerCAmelCase(		__UpperCAmelCase			):






	"""simple docstring"""





	_lowercase :    Optional[Any]							=							credit_card_number
	_lowercase :    List[str]							=							0
	_lowercase :    Optional[int]							=							len(__UpperCAmelCase			) - 2
	for i in range(__UpperCAmelCase     ,-1     ,-2			):
		#  double the value of every second digit
		_lowercase :    int							=							int(cc_number[i]			)
		digit *= 2
		# If doubling of a number results in a two digit number
		# i.e greater than 9(e.g., 6 × 2 = 12),
		# then add the digits of the product (e.g., 12: 1 + 2 = 3, 15: 1 + 5 = 6),
		# to get a single digit number.
		if digit > 9:
			digit %= 10
			digit += 1
		_lowercase :    Dict							=							cc_number[:i] + str(__UpperCAmelCase			) + cc_number[i + 1 :]
		total += digit

	# Sum up the remaining digits
	for i in range(len(__UpperCAmelCase			) - 1     ,-1     ,-2			):
		total += int(cc_number[i]			)

	return total % 10 == 0


def      __lowerCAmelCase(		__UpperCAmelCase			):






	"""simple docstring"""





	_lowercase :    str							=							F'''{credit_card_number} is an invalid credit card number because'''
	if not credit_card_number.isdigit():
		print(F'''{error_message} it has nonnumerical characters.'''			)
		return False

	if not 13 <= len(__UpperCAmelCase			) <= 16:
		print(F'''{error_message} of its length.'''			)
		return False

	if not validate_initial_digits(__UpperCAmelCase			):
		print(F'''{error_message} of its first two digits.'''			)
		return False

	if not luhn_validation(__UpperCAmelCase			):
		print(F'''{error_message} it fails the Luhn check.'''			)
		return False

	print(F'''{credit_card_number} is a valid credit card number.'''			)
	return True


if __name__ == "__main__":
						import doctest

						doctest.testmod()
						validate_credit_card_number('4111111111111111')
						validate_credit_card_number('32323')




"""simple docstring"""







def      __lowerCAmelCase(		__UpperCAmelCase     ,__UpperCAmelCase			):






	"""simple docstring"""





	_lowercase :    Any							=							len(__UpperCAmelCase			)
	_lowercase :    Any							=							len(__UpperCAmelCase			)
	_lowercase :    List[Any]							=							[[False for _ in range(m + 1			)] for _ in range(n + 1			)]
	_lowercase :    Union[str, Any]							=							True
	for i in range(__UpperCAmelCase			):
		for j in range(m + 1			):
			if dp[i][j]:
				if j < m and a[i].upper() == b[j]:
					_lowercase :    Optional[int]							=							True
				if a[i].islower():
					_lowercase :    Union[str, Any]							=							True
	return dp[n][m]


if __name__ == "__main__":
						import doctest

						doctest.testmod()



