Java
\n# Code\n\nclass Solution {\n    public int numDupDigitsAtMostN(int N) {\n        // \u041F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u0443\u0435\u043C N + 1 \
\n# Code\n```\nclass Solution {\n    public int numDupDigitsAtMostN(int N) {\n        // \u041F\u0440\u0435\u043E\u0431\u0440\u0430\u0437\u0443\u0435\u043C N + 1 \u0432 \u0441\u0442\u0440\u043E\u043A\u0443, \u0442\u0430\u043A \u043A\u0430\u043A \u043D\u0430\u043C \u043D\u0443\u0436\u043D\u043E \u0432\u043A\u043B\u044E\u0447\u0438\u0442\u044C N\n        char[] nums = String.valueOf(N + 1).toCharArray();\n        int len = nums.length;\n\n        // \u041F\u043E\u0434\u0441\u0447\u0435\u0442 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0443\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0445 \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u043D\u043E\u0432\u043E\u043A \u0434\u043B\u044F \u043A\u0430\u0436\u0434\u043E\u0433\u043E \u043C\u0435\u0441\u0442\u0430\n        int result = 0;\n        for (int i = 1; i < len; i++) {\n            result += 9 * permutation(9, i - 1);\n        }\n\n        // \u041F\u043E\u0434\u0441\u0447\u0435\u0442 \u0443\u043D\u0438\u043A\u0430\u043B\u044C\u043D\u044B\u0445 \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u043D\u043E\u0432\u043E\u043A \u0434\u043B\u044F \u043E\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044F \u0446\u0438\u0444\u0440\n        Set<Character> seen = new HashSet<>();\n        for (int i = 0; i < len; i++) {\n            for (char digit = i == 0 ? \'1\' : \'0\'; digit < nums[i]; digit++) {\n                if (!seen.contains(digit)) {\n                    result += permutation(9 - i, len - i - 1);\n                }\n            }\n\n            if (!seen.add(nums[i])) {\n                break;\n            }\n        }\n\n        return N - result;\n    }\n\n    // \u0424\u0443\u043D\u043A\u0446\u0438\u044F \u0434\u043B\u044F \u043F\u043E\u0434\u0441\u0447\u0435\u0442\u0430 \u043F\u0435\u0440\u0435\u0441\u0442\u0430\u043D\u043E\u0432\u043E\u043A\n    private int permutation(int n, int k) {\n        int result = 1;\n        for (int i = 0; i < k; i++) {\n            result *= n - i;\n        }\n        return result;\n    }\n}\n```
['Java']