<p>We call a positive integer <strong>special</strong> if all of its digits are <strong>distinct</strong>.</p>

<p>Given a <strong>positive</strong> integer <code>n</code>, return <em>the number of special integers that belong to the interval </em><code>[1, n]</code>.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> n = 20
<strong>Output:</strong> 19
<strong>Explanation:</strong> All the integers from 1 to 20, except 11, are special. Thus, there are 19 special integers.
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> n = 5
<strong>Output:</strong> 5
<strong>Explanation:</strong> All the integers from 1 to 5 are special.
</pre>

<p><strong class="example">Example 3:</strong></p>

<pre>
<strong>Input:</strong> n = 135
<strong>Output:</strong> 110
<strong>Explanation:</strong> There are 110 integers from 1 to 135 that are special.
Some of the integers that are not special are: 22, 114, and 131.</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= n &lt;= 2 * 10<sup>9</sup></code></li>
</ul>

class Solution:
    def countSpecialNumbers(self, n: int) -> int:
        if n <= 10:
            return n
        
        ans = 0
        c = 9
        curr = 9
        for i in range(len(str(n)) - 1):
            ans+=curr
            curr*=c
            c-=1
        for i in range(len(str(n))):
            curr = None
            if i == 0:
                curr = int(str(n)[i]) - 1
            else:
                l = 0
                k = 0
                count = 0
                while k < i:
                    if int(str(n)[k]) < int(str(n)[i]):
                        l+=1
                    elif int(str(n)[k]) == int(str(n)[i]):
                        count+=1
                    k+=1
                if i != len(str(n)) - 1 or count > 0:
                    curr = int(str(n)[i]) - l
                elif count == 0:
                    curr = int(str(n)[i])+1 - l
            j = i+1
            c = 10 - (i+1)
            while j < len(str(n)):
                curr*=c
                j+=1
                c-=1
            ans+=curr
            print(curr)
            if str(n)[i] in str(n)[:i]:
                break
        return ans
        
40