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 Scala (2.11.7) (judge verdict: Wrong Answer)

object Main extends App {
  val NN = io.Source.stdin.getLines.toIndexedSeq.head.toInt
  private def func(i:Int):String={
    var t=i
    var str=""
    do{
      val rem = t%4
      val c = if(rem==1) "3" else if(rem==2) "5" else if(rem==3) "7" else "x"
      str = c + str
      t = t/4
    }while(t>0)
    str
  }
  private def check(s:String):Boolean={
    s.contains('3') && s.contains('5') && s.contains('7') //&& !s.contains('x')
  }  
  //println(NN)
  
  var ii=1
  var ret=0
  var n=0L
  do{
    val str = func(ii)
    if(!str.contains('x')){
      n = str.toLong
      if(n < NN && check(str)){
        //println(str + "+")
        ret += 1
      } //else println(str)
    }
    ii += 1
  }while(n < NN)

  println(ret)
}