https://leetcode.com/problems/numbers-at-most-n-given-digit-set/
class Solution:
def atMostNGivenDigitSet(self, digits: List[str], n: int) -> int:
def count_numbers(number):
if int(number) > n: return 0
counts = sum([count_numbers(number + d) for d in digits])
return 1 + counts
return sum([count_numbers(d) for d in digits])
assert Solution().atMostNGivenDigitSet(["1","3","5","7"], 100) == 20