class Solution:
def getCount(self, N):
if N == 0:
return 0
# Predecessors for each digit (0-9)
predecessors = [
[0, 8], # 0
[1, 2, 4], # 1
[1, 2, 3, 5], # 2
[2, 3, 6], # 3
[1, 4, 5, 7], # 4
[2, 4, 5, 6, 8], # 5
[3, 5, 6, 9], # 6
[4, 7, 8], # 7
[0, 5, 7, 8, 9], # 8
[6, 8, 9], # 9
]
prev = [1] * 10 # For N=1, each digit has 1 way
if N == 1:
return sum(prev)
for _ in range(2, N + 1):
curr = [0] * 10
for d in range(10):
curr[d] = sum(prev[x] for x in predecessors[d])
prev = curr
return sum(prev)
# Example usage:
# sol = Solution()
# print(sol.getCount(2)) # Output: 36
Y2xhc3MgU29sdXRpb246CgogICAgZGVmIGdldENvdW50KHNlbGYsIE4pOgogICAgICAgIGlmIE4gPT0gMDoKICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAKICAgICAgICAjIFByZWRlY2Vzc29ycyBmb3IgZWFjaCBkaWdpdCAoMC05KQogICAgICAgIHByZWRlY2Vzc29ycyA9IFsKICAgICAgICAgICAgWzAsIDhdLCAgICAgICAgICAgICAgIyAwCiAgICAgICAgICAgIFsxLCAyLCA0XSwgICAgICAgICAgICMgMQogICAgICAgICAgICBbMSwgMiwgMywgNV0sICAgICAgICAjIDIKICAgICAgICAgICAgWzIsIDMsIDZdLCAgICAgICAgICAgIyAzCiAgICAgICAgICAgIFsxLCA0LCA1LCA3XSwgICAgICAgICMgNAogICAgICAgICAgICBbMiwgNCwgNSwgNiwgOF0sICAgICAjIDUKICAgICAgICAgICAgWzMsIDUsIDYsIDldLCAgICAgICAgIyA2CiAgICAgICAgICAgIFs0LCA3LCA4XSwgICAgICAgICAgICMgNwogICAgICAgICAgICBbMCwgNSwgNywgOCwgOV0sICAgICAjIDgKICAgICAgICAgICAgWzYsIDgsIDldLCAgICAgICAgICAgIyA5CiAgICAgICAgXQogICAgICAgIAogICAgICAgIHByZXYgPSBbMV0gKiAxMCAgIyBGb3IgTj0xLCBlYWNoIGRpZ2l0IGhhcyAxIHdheQogICAgICAgIAogICAgICAgIGlmIE4gPT0gMToKICAgICAgICAgICAgcmV0dXJuIHN1bShwcmV2KQogICAgICAgIAogICAgICAgIGZvciBfIGluIHJhbmdlKDIsIE4gKyAxKToKICAgICAgICAgICAgY3VyciA9IFswXSAqIDEwCiAgICAgICAgICAgIGZvciBkIGluIHJhbmdlKDEwKToKICAgICAgICAgICAgICAgIGN1cnJbZF0gPSBzdW0ocHJldlt4XSBmb3IgeCBpbiBwcmVkZWNlc3NvcnNbZF0pCiAgICAgICAgICAgIHByZXYgPSBjdXJyCiAgICAgICAgCiAgICAgICAgcmV0dXJuIHN1bShwcmV2KQoKIyBFeGFtcGxlIHVzYWdlOgojIHNvbCA9IFNvbHV0aW9uKCkKIyBwcmludChzb2wuZ2V0Q291bnQoMikpICAjIE91dHB1dDogMzY=