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 Go (1.6) (judge verdict: Time Limit Exceeded)

package main

import "fmt"

func order(n int) int {
	count := 1
	for {
		if n/10 >= 1 {
			n /= 10
			count++
		} else {
			break
		}
	}
	return count
}
func is(rep []int, n int) bool {
	for i := 0; i < len(rep); i++ {
		if rep[i] == n {
			return true
		}
	}
	return false
}
func solve(n int) bool {
	order := order(n)
	var rep []int
	for i := 1; i <= order; i++ {
		if n%10 == 3 || n%10 == 5 || n%10 == 7 {
			rep = append(rep, n%10)
			n /= 10
			if i == order {
				if is(rep, 3) && is(rep, 5) && is(rep, 7) {
					return true
				}
			}

		}
	}
	return false
}
func main() {
	var n int
	fmt.Scanf("%d\n", &n)

	count := 0
	for i := 357; i <= n; i++ {
		if solve(i) {
			count++
		}
	}
	fmt.Println(count)
}