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)

function convert_753_from_4b(based3){
  const str = based3.split('')
  var result = '';
  for(var i=0;i<str.length;i++){
    if(str[i]=='3'){result+='7'}
    if(str[i]=='2'){result+='5'}
    if(str[i]=='1'){result+='3'}
    if(str[i]=='0'){result+='0'}
  }
  return parseInt(result);
}

function generate_753_number(number){
  if(n.length==10){return n}
  return [generate_753_number(number + '3'),generate_753_number(number + '5'),generate_753_number(number + '7')]
}

function is_753(number){
  return (number==3 || number==5 || number==7)
}

function is_753_number(n){
  const splitted = n.toString().split('');
  const numbers = new Set(splitted);
  if(numbers.size!=3){return false;}

  return numbers.has('3') && numbers.has('5') && numbers.has('7')
}

function main(input){
  const N = parseInt(input.trim());

  var result=0;
  for(var i=0;i<=1048569;i++){
    var based4 = i.toString(4);
    var num_753 = convert_753_from_4b(based4);

    if(num_753>N){break;}

//console.log([i,based4,num_753])

    if(is_753_number(num_753)){
      result++;
      //console.log(num_753);
    }
  }


  console.log(result);
}

main(require('fs').readFileSync('/dev/stdin','utf8'))