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 C (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <stdio.h>

int digits(int x){
  int n = 0;
  while(x > 0){
    ++n;
    x /= 10;
  }
  return n;
}

int num(int n){//最高位の数
  int m = digits(n);
  for(int i = 0; i < m - 1; ++i) n /= 10;
  return n;
}

int pow(int x, int n){
  int a = 1;
  for(int i = 0; i < n; ++i) a *= x;
  return a;
}

int main(){ //最上位桁以外のn>=チェックしてない
  int n;
  scanf("%d",&n);
  int dig = digits(n);
  int u = num(n);
  int answer = 0;
  if(dig < 3);
  else if(dig == 3 && u < 3);
  else{
    if(u < 9) answer += (u - 1) / 2;
    else answer = 3;
    answer *= (pow(3,dig-1) - pow(2,dig) + 1);
  }  
  printf("%d\n",answer);
  return 0;
}