# -*- coding: utf-8 -*-



from itertools import product



N = int(eval(input()))



cnt = 0

# 候補となりうる9桁までの数字を列挙

for prod in product(['0', '3', '5', '7'], repeat=9):

    # チェック用に変形

    num = int(''.join(prod))

    s = str(num)

    # 753数ではない

    if (s.find('3') == -1 or s.find('5') == -1

            or s.find('7') == -1 or s.find('0') != -1):

        continue

    # N以下ではない

    if num > N:

        continue

    cnt += 1

print(cnt)

# -*- coding: utf-8 -*-



"""

解説参考

再帰関数で候補の数を作っていく版

"""



N = int(eval(input()))



def dfs(s):

    # N以下しかやらない

    if int(s) > N:

        return 0

    # 753数かどうか

    if '7' in s and '5' in s and '3' in s:

        res = 1

    else:

        res = 0

    # sの後ろに753を付けたもので再帰していく

    for c in '753':

        res += dfs(s + c)

    # 最終的に自分より大きい桁で増えた分を返却していく

    return res



print((dfs('0')))

# -*- coding: utf-8 -*-
from itertools import product

N = int(eval(input()))
cnt = 0
# 候補となりうる9桁までの数字を列挙
for prod in product(["0", "3", "5", "7"], repeat=9):
    # チェック用に変形
    num = int("".join(prod))
    s = str(num)
    # 753数ではない
    if s.find("3") == -1 or s.find("5") == -1 or s.find("7") == -1 or s.find("0") != -1:
        continue
    # N以下ではない
    if num > N:
        continue
    cnt += 1
print(cnt)

# -*- coding: utf-8 -*-
"""
解説参考
再帰関数で候補の数を作っていく版
"""
N = int(eval(input()))


def dfs(s):
    # N以下しかやらない
    if int(s) > N:
        return 0
    # 753数かどうか
    if "7" in s and "5" in s and "3" in s:
        res = 1
    else:
        res = 0
    # sの後ろに753を付けたもので再帰していく
    for c in "753":
        res += dfs(s + c)
    # 最終的に自分より大きい桁で増えた分を返却していく
    return res


print((dfs("0")))

-from itertools import product +""" +解説参考 +再帰関数で候補の数を作っていく版 +""" +N = int(eval(input())) -N = int(eval(input())) -cnt = 0 -# 候補となりうる9桁までの数字を列挙 -for prod in product(["0", "3", "5", "7"], repeat=9): -    # チェック用に変形 -    num = int("".join(prod)) -    s = str(num) -    # 753数ではない -    if s.find("3") == -1 or s.find("5") == -1 or s.find("7") == -1 or s.find("0") != -1: -        continue -    # N以下ではない -    if num > N: -        continue -    cnt += 1 -print(cnt) + +def dfs(s): +    # N以下しかやらない +    if int(s) > N: +        return 0 +    # 753数かどうか +    if "7" in s and "5" in s and "3" in s: +        res = 1 +    else: +        res = 0 +    # sの後ろに753を付けたもので再帰していく +    for c in "753": +        res += dfs(s + c) +    # 最終的に自分より大きい桁で増えた分を返却していく +    return res + + +print((dfs("0")))