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>
#include <stdlib.h>

void f(int n, char *s, int *i, int *t){
  if(n == 0){
    t[*i] = atoi(s);
    (*i) += 1;
    return;
  }
  else{
    s[n - 1] = '3';
    f(n - 1, s, i, t);
    s[n - 1] = '5';
    f(n - 1, s, i, t);
    s[n - 1] = '7';
    f(n - 1, s, i, t);
  }
}

int
main(int argc, char *argv[])
{
  int x;
  scanf("%d", &x);

  int keta = 0, temp = x;
  while(temp > 0){
    temp /= 10;
    keta++;
  }


  int ans;

  if(keta <= 2) ans = 0;

  else{
    int i; char s[20] = {}; int t[1000000]; int c3, c5, c7, c;
    for(int j = 3; j <= keta; j++){
      i = 0;
      f(j, s, &i, t);
      for(int k = 0; k < i; k++){
	c3 = 0; c5 = 0; c7 = 0; c = 0;
	if(t[k] <= x){
	  while(t[k] > 0){
	    if(t[k] % 10 == 3) c3++;
	    else if(t[k] % 10 == 5) c5++;
	    else if(t[k] % 10 == 7) c7++;
	    else{c = 1; break;}
	    t[k] /= 10;
	  }
	  if(c == 0 && (c3 > 0 && c5 > 0 && c7 > 0)) ans++;
	}
      }
    }
  }

  printf("%d\n", ans);
  return 0;
}