Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n.
    Example:
Given n = 2, return 91. (The answer should be the total numbers in the range of 0 ≤ x < 100, excluding [11,22,33,44,55,66,77,88,99])
Credits:Special thanks to @memoryless for adding this problem and creating all test cases.
class Solution:
     def countNumbersWithUniqueDigits(self, n):
         """
         :type n: int
         :rtype: int
         """
         answer = 10 ** n
         for i in range(1, n + 1):
             all_count = 9 * 10 ** (i - 1)
             invalid = 9
             for j in range(1, i):
                 invalid *= (10 - j)
             answer -= (all_count - invalid)
         
         return answer
class Solution:
     def countNumbersWithUniqueDigits(self, n):
         """
         :type n: int
         :rtype: int
         """
         answer = 10 ** n
         for i in range(1, n + 1):
             all_count = 9 * 10 ** (i - 1)
             invalid = 9
             for j in range(1, i):
                 invalid *= (10 - j)
             answer -= (all_count - invalid)
         
         return answer