Problem:
Score : 300 points

Problem Statement

You are given an integer N. Among the integers between 1 and N (inclusive), how many Shichi-Go-San numbers (literally "Seven-Five-Three numbers") are there?

Here, a Shichi-Go-San number is a positive integer that satisfies the following condition:

When the number is written in base ten, each of the digits 7, 5 and 3 appears at least once, and the other digits never appear.

Constraints

1 \leq N < 10^9

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

Print the number of the Shichi-Go-San numbers between 1 and N (inclusive).

Sample Input 1

575

Sample Output 1

4

There are four Shichi-Go-San numbers not greater than 575: 357, 375, 537 and 573.

Sample Input 2

3600

Sample Output 2

13

There are 13 Shichi-Go-San numbers not greater than 3600: the above four numbers, 735, 753, 3357, 3375, 3537, 3557, 3573, 3575 and 3577.

Sample Input 3

999999999

Sample Output 3

26484

Solution in JavaScript (node.js v5.12) (judge verdict: Accepted)

const zeroPadding = (num, length) => {
  return ('0000000000' + num).slice(-length);
};

const Main = (input) => {
  // 入力値の整形
  /*
  753数を出力する。
  */
  const numberArray = [7, 5, 3];
  const genaratedArray = Array(Math.pow(3, input.length))
    .fill(0)
    .map((a, b) => {
      return b.toString(3);
    })
    .reduce((accurator, value) => {
      // inputが3桁の場合は
      // 000~222?
      for (var index = value.length; index <= input.length; index++) {
        accurator.push(zeroPadding(value, index));
      }
      return accurator;
    }, [])
    .filter((value) => {
      return (
        value.split('').filter((x, i, self) => {
          return self.indexOf(x) === i;
        }).length === 3
      );
    })
    .map((value, index, romArray) => {
      return value.split('').reduce((accurator, value) => {
        return accurator + String(numberArray[value]);
      }, '');
    })
    .filter((value) => {
      return Number(value) <= Number(input);
    });

  console.log(genaratedArray.length);
};

//* この行以降は編集しないでください（標準入出力から一度に読み込み、Mainを呼び出します）
Main(require('fs').readFileSync('/dev/stdin', 'utf8'));