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: Accepted)

n = int(input())
d = len(str(n)) - 1
k = str(n)
j = int(k[0])
count = 1
co = 0
for i9 in range(3, 8, 2):
    for i8 in range(3, 8, 2):
        for i7 in range(3, 8, 2):
            for i6 in range(3, 8, 2):
                for i5 in range(3, 8, 2):
                    for i4 in range(3, 8, 2):
                        for i3 in range(3, 8, 2):
                            for i2 in range(3, 8, 2):
                                for i1 in range(3, 8, 2):
                                    if len(set([i9,i8,i7,i6,i5,i4,i3,i2,i1])) == 3:
                                        t = int(str(i9) + str(i8) + str(i7) + str(i6) + str(i5) + str(i4) + str(i3) + str(i2) + str(i1))
                                        if t <= n:
                                            co += 1
for i8 in range(3, 8, 2):
    for i7 in range(3, 8, 2):
        for i6 in range(3, 8, 2):
            for i5 in range(3, 8, 2):
                for i4 in range(3, 8, 2):
                    for i3 in range(3, 8, 2):
                        for i2 in range(3, 8, 2):
                            for i1 in range(3, 8, 2):
                                if len(set([i8,i7, i6, i5, i4, i3, i2, i1])) == 3:
                                    t = int(str(i8) + str(i7) + str(i6) + str(i5) + str(i4) + str(i3) + str(i2) + str(i1))
                                    if t <= n:
                                        co += 1
for i7 in range(3, 8, 2):
    for i6 in range(3, 8, 2):
        for i5 in range(3, 8, 2):
            for i4 in range(3, 8, 2):
                for i3 in range(3, 8, 2):
                    for i2 in range(3, 8, 2):
                        for i1 in range(3, 8, 2):
                            if len(set([i7, i6, i5, i4, i3, i2, i1])) == 3:
                                t = int(str(i7) + str(i6) + str(i5) + str(i4) + str(i3) + str(i2) + str(i1))
                                if t <= n:
                                    co += 1

for i6 in range(3, 8, 2):
    for i5 in range(3, 8, 2):
        for i4 in range(3, 8, 2):
            for i3 in range(3, 8, 2):
                for i2 in range(3, 8, 2):
                    for i1 in range(3, 8, 2):
                        if len(set([i6, i5, i4, i3, i2, i1])) == 3:
                            t = int(str(i6) + str(i5) + str(i4) + str(i3) + str(i2) + str(i1))
                            if t <= n:
                                co += 1
for i5 in range(3, 8, 2):
    for i4 in range(3, 8, 2):
        for i3 in range(3, 8, 2):
            for i2 in range(3, 8, 2):
                for i1 in range(3, 8, 2):
                    if len(set([i5, i4, i3, i2, i1])) == 3:
                        t = int(str(i5) + str(i4) + str(i3) + str(i2) + str(i1))
                        if t <= n:
                            co += 1
for i4 in range(3, 8, 2):
    for i3 in range(3, 8, 2):
        for i2 in range(3, 8, 2):
            for i1 in range(3, 8, 2):
                if len(set([i4, i3, i2, i1])) == 3:
                    t = int(str(i4) + str(i3) + str(i2) + str(i1))
                    if t <= n:
                        co += 1
for i3 in range(3, 8, 2):
    for i2 in range(3, 8, 2):
        for i1 in range(3, 8, 2):
            if len(set([i3, i2, i1])) == 3:
                t = int(str(i3) + str(i2) + str(i1))
                if t <= n:
                    co += 1

print(co)
"""for i in range(3, d):
    co += 3 ** i - 3 * 2 ** i + 3
if 0 < j < 3:
    co += 3 ** d - 3 * 2 ** d + 3
elif 3 <= j < 5:
    for u
elif 5 <= j < 7:
    count *= 2
elif 7 <= j:
    count *= 3"""
"""li = [6, ]
for i in range(d, 0, -1):
    if i >= 3:
        count *= 3
    elif i == 2 and d + 1 > 2:
        count *= 2
    elif d + 1 <= 2:
        count = 0
if 5 <= j < 7:
    count *= 2
elif 7 <= j:
    count *= 3
print(count)"""