#include <bits/stdc++.h>
// #include <iostream>
// #include <vector>
// #include <map>
// #include <algorithm>
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())

int gcd(int a, int b){
    if (b == 0) {
        return a;
    }
    return gcd(b, a%b);
}

ll lcm(ll a, ll b){
    return a * b / gcd(a,b);
}


bool is753(int n){
    string s = to_string(n);

    int n3 = 0, n5 = 0, n7 = 0;
    for (int i = 0; i < (int)s.size(); i++) {
        if (s[i] == '3') {
            n3++;
        }else if (s[i] == '5'){
            n5++;
        }else if (s[i] == '7') {
            n7++;
        }else{
            return false;
        }
    }

    if (n3 > 0 && n5 > 0 && n7 > 0) {
        return true;
    }else{
        return false;
    }
}

int factorial(int n){
    int ans = 1;
    for (int i = 1; i <= n; i++) {
        ans *= i;
    }

    return ans;
}


int count_n_digit_comb(int k){
    int ans = 0;
    int x,y,z;

    // for (int k = 3; k<=n; k++){
        for (int i = 0; i <= k-3; i++) {
            for (int j = 0; j <= k-3-i; j++) {
                x = i+1;
                y = j+1;
                z = k - (x+y);
                // cout << "x = " << x << ", y = " << y << ", z = " << z << endl;
                ans += factorial(k) / factorial(x) / factorial(y) / factorial(z);
            }
        }
    // }

    return ans;
}


int count_less_n_digit(int n){
    int digit = to_string(n).size();
    int ans = 0;
    int cand[3] = {3,5,7};
    int a = digit;
    ans = 0;
    for (int i = 0; i < pow(3,a); i++) {
        int x = 0;
        int tmpnum = i;
        for (int j = a-1; j >= 0; j--) {
            x += cand[tmpnum / (int)pow(3,j)] * (int)pow(10,j);
            tmpnum = tmpnum % (int)pow(3,j);
        }
        if (is753(x) && x <= n) {
            // cout << x << endl;
            ans++;
        }
    }
    // cout << ans << endl;
    return ans;

}


void solve(){
    // int N;
    // cin >> N;
    //
    // if (N < 357) {
    //     cout << 0 << endl;
    //     return;
    // }
    //
    // int ans = 0;
    // for (int i = 333333357; i <= N; i++) {
    //     if (is753(i)) {
    //         ans++;
    //     }
    // }
    //
    // cout << ans << endl;


    // int N;
    // cin >> N;
    //
    // int ans = 0;
    // for (int i = 3; i <= 9; i++) {
    //     ans += count_n_digit_comb(i);
    // }
    // int x,y,z;
    // for (int k = 3; k<=9; k++){
    //     for (int i = 0; i <= k-3; i++) {
    //         for (int j = 0; j <= k-3-i; j++) {
    //             x = i+1;
    //             y = j+1;
    //             z = k - (x+y);
    //             cout << "x = " << x << ", y = " << y << ", z = " << z << endl;
    //             ans += factorial(k) / factorial(x) / factorial(y) / factorial(z);
    //             // cout << factorial(9) / factorial(x) / factorial(y) / factorial(z) << endl;
    //             // cout << ans << endl;
    //         }
    //     }
    // }

    // cout << ans << endl;
    // for (int i = 3; i <= 9; i++) {
    //     cout << "i = " << i << ", " << count_n_digit_comb(i) << endl;
    // }
    // cout << count_n_digit_comb(8) << endl;
    // cout << count_n_digit_comb(9) << endl;
    // cout << count_less_n_digit(77777752) << endl;

    // int cand[3] = {3,5,7};
    // int a = 9;
    // ans = 0;
    // for (int i = 0; i < pow(3,a); i++) {
    //     int x = 0;
    //     int tmpnum = i;
    //     for (int j = a-1; j >= 0; j--) {
    //         x += cand[tmpnum / (int)pow(3,j)] * (int)pow(10,j);
    //         tmpnum = tmpnum % (int)pow(3,j);
    //     }
    //     if (is753(x)) {
    //         cout << x << endl;
    //         ans++;
    //     }
    // }
    // cout << ans << endl;
    //
    //

    int N;
    cin >> N;

    int digit = to_string(N).size();
    int ans = 0;
    for (int i = 1; i < digit; i++) {
        ans += count_n_digit_comb(i);
    }
    ans += count_less_n_digit(N);
    cout << ans << endl;
    return;
}

int main(int argc, char const* argv[])
{
    solve();
    return 0;
}


Measured memory_bytes: 256