

import itertools





def  _snake_case		(snake_case_					:     int = 100_0000  )							->		int:
  __UpperCAmelCase	:  Tuple		=     [1]

  for i in itertools.count(len(snake_case_  )  ):
    __UpperCAmelCase	:  Optional[Any]		=     0
    for j in itertools.count(1  ):
      __UpperCAmelCase	:  Optional[Any]		=     -1 if j % 2 == 0 else +1
      __UpperCAmelCase	:  Optional[int]		=     (j * j * 3 - j) // 2
      if index > i:
        break
      item += partitions[i - index] * sign
      item %= number
      index += j
      if index > i:
        break
      item += partitions[i - index] * sign
      item %= number

    if item == 0:
      return i
    partitions.append(snake_case_  )

  return 0


if __name__ == "__main__":
      import doctest

      doctest.testmod()

      print(F'''{solution() = }''')








from __future__ import annotations





def  _snake_case		(snake_case_					:     str  )							->		bool:
  __UpperCAmelCase	:  int
  __UpperCAmelCase	:  list[str]		=     list(snake_case_  )
  __UpperCAmelCase,			__UpperCAmelCase	:  Any		=     _vector[:-1], int(_vector[-1]  )
  __UpperCAmelCase	:  list[int]		=     [int(snake_case_  ) for digit in __vector]

  vector.reverse()
  for i, digit in enumerate(snake_case_  ):
    if i & 1 == 0:
      __UpperCAmelCase	:  int		=     digit * 2
      if doubled > 9:
        doubled -= 9
      check_digit += doubled
    else:
      check_digit += digit

  return check_digit % 10 == 0


if __name__ == "__main__":
      import doctest

      doctest.testmod()
      assert is_luhn('''79927398713''')
      assert not is_luhn('''79927398714''')





