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 Python (3.4.3) (judge verdict: Wrong Answer)

def number_lst(x): #x桁での753
    lst = ['3', '5', '7']
    flag = False
    while True:
        for i in range(len(lst)):
            if len(lst[0])==x:
                flag = True
                break

            number = lst[i]
            y1 = number + '3'
            y2 = number + '5'
            y3 = number + '7'
            lst.append(y1)
            lst.append(y2)
            lst.append(y3)

        if flag:
            break

        min_lst = len(lst[0])
        new_lst = []
        for i in range(len(lst)):
            if len(lst[i])!=min_lst:
                new_lst.append(lst[i])
        lst = new_lst.copy()

    new_lst = []
    for i in range(len(lst)):
        number = lst[i]
        tmp_lst = [number.count('3'), number.count('5'), number.count('7')]
        if 0 not in tmp_lst:
            new_lst.append(number)

    return new_lst

n = str(input())
digit = len(n)

if digit<3:
    answer = 0
else:
    tmp1 = 3**(digit-1) - 3*2**(digit-1) + 3 #一個くらいを消去した時の個数
    tmp2 = 0

    lst_1 = number_lst(digit).copy()

    for i in range(len(lst_1)):
        number = int(lst_1[i])

        if number<=int(n):
            tmp2 += 1

    answer = tmp1 + tmp2
    print(tmp1)
    print(tmp2)

print(answer)