<p>Given an integer <code>n</code>, return the count of all numbers with unique digits, <code>x</code>, where <code>0 &lt;= x &lt; 10<sup>n</sup></code>.</p>

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

<pre>
<strong>Input:</strong> n = 2
<strong>Output:</strong> 91
<strong>Explanation:</strong> The answer should be the total numbers in the range of 0 &le; x &lt; 100, excluding 11,22,33,44,55,66,77,88,99
</pre>

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

<pre>
<strong>Input:</strong> n = 0
<strong>Output:</strong> 1
</pre>

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

<ul>
	<li><code>0 &lt;= n &lt;= 8</code></li>
</ul>

class Solution {
public:
    int countNumbersHelper(string& current, int n) {
        if (n == 0) {
            return 0;
        }
        
        char first = '0';
        if (current == "")
            first = '1';


        int result = 0;
        for (char i = first; i <='9'; i++) {
            if (find(current.begin(), current.end(), i) == current.end()) {
                current.push_back(i);
                result++;
                result += countNumbersHelper(current, n - 1);
                current.pop_back();
            }
        }
        return result;
    }

    int countNumbersWithUniqueDigits(int n) {
        string str = "";
        str.reserve(10);
        return countNumbersHelper(str, n) + 1;
    }
};

/*
         ""
     /   |    \


*/
8400