#include "bits/stdc++.h"
using namespace std;

int main() {
    int N;
    cin >> N;

    int t = N;
    int keta = 0;
    while (t != 0) {
        t /= 10;
        keta++;
    }

    vector<int> a = {3, 5, 7};
    vector<int> res = {};
    for (int i1 = 0; i1 < 3; i1++) {
        for (int i2 = 0; i2 < 3; i2++) {
            for (int i3 = 0; i3 < 3; i3++) {
                                        int k = a[i1] * pow(10, 2) + a[i2] * pow(10, 1) + a[i3];
                                        vector<int> cnt(3);
                                        cnt[i1]++;
                                        cnt[i2]++;
                                        cnt[i3]++;
                                        if (cnt[0] >= 1 && cnt[1] >= 1 && cnt[2] >= 1) {
                                            res.push_back(k);
                                        }
            }
        }
    }
    for (int i1 = 0; i1 < 3; i1++) {
        for (int i2 = 0; i2 < 3; i2++) {
            for (int i3 = 0; i3 < 3; i3++) {
                for (int i4 = 0; i4 < 3; i4++) {
                                        int k = a[i1] * pow(10, 3) + a[i2] * pow(10, 2) + a[i3] * pow(10, 1) + a[i4];
                                        vector<int> cnt(3);
                                        cnt[i1]++;
                                        cnt[i2]++;
                                        cnt[i3]++;
                                        cnt[i4]++;
                                        if (cnt[0] >= 1 && cnt[1] >= 1 && cnt[2] >= 1) {
                                            res.push_back(k);
                                        }
                }
            }
        }
    }
    for (int i1 = 0; i1 < 3; i1++) {
        for (int i2 = 0; i2 < 3; i2++) {
            for (int i3 = 0; i3 < 3; i3++) {
                for (int i4 = 0; i4 < 3; i4++) {
                    for (int i5 = 0; i5 < 3; i5++) {
                                        int k = a[i1] * pow(10, 4) + a[i2] * pow(10, 3) + a[i3] * pow(10, 2) + a[i4] * pow(10, 1) + a[i5];
                                        vector<int> cnt(3);
                                        cnt[i1]++;
                                        cnt[i2]++;
                                        cnt[i3]++;
                                        cnt[i4]++;
                                        cnt[i5]++;
                                        if (cnt[0] >= 1 && cnt[1] >= 1 && cnt[2] >= 1) {
                                            res.push_back(k);
                                        }
                    }
                }
            }
        }
    }
    for (int i1 = 0; i1 < 3; i1++) {
        for (int i2 = 0; i2 < 3; i2++) {
            for (int i3 = 0; i3 < 3; i3++) {
                for (int i4 = 0; i4 < 3; i4++) {
                    for (int i5 = 0; i5 < 3; i5++) {
                        for (int i6 = 0; i6 < 3; i6++) {
                                        int k = a[i1] * pow(10, 5) + a[i2] * pow(10, 4) + a[i3] * pow(10, 3) + a[i4] * pow(10, 2) + a[i5] * pow(10, 1) + a[i6];
                                        vector<int> cnt(3);
                                        cnt[i1]++;
                                        cnt[i2]++;
                                        cnt[i3]++;
                                        cnt[i4]++;
                                        cnt[i5]++;
                                        cnt[i6]++;
                                        if (cnt[0] >= 1 && cnt[1] >= 1 && cnt[2] >= 1) {
                                            res.push_back(k);
                                        }
                        }
                    }
                }
            }
        }
    }
    for (int i1 = 0; i1 < 3; i1++) {
        for (int i2 = 0; i2 < 3; i2++) {
            for (int i3 = 0; i3 < 3; i3++) {
                for (int i4 = 0; i4 < 3; i4++) {
                    for (int i5 = 0; i5 < 3; i5++) {
                        for (int i6 = 0; i6 < 3; i6++) {
                            for (int i7 = 0; i7 < 3; i7++) {
                                        int k = a[i1] * pow(10, 6) + a[i2] * pow(10, 5) + a[i3] * pow(10, 4) + a[i4] * pow(10, 3) + a[i5] * pow(10, 2) + a[i6] * pow(10, 1) + a[i7];
                                        vector<int> cnt(3);
                                        cnt[i1]++;
                                        cnt[i2]++;
                                        cnt[i3]++;
                                        cnt[i4]++;
                                        cnt[i5]++;
                                        cnt[i6]++;
                                        cnt[i7]++;
                                        if (cnt[0] >= 1 && cnt[1] >= 1 && cnt[2] >= 1) {
                                            res.push_back(k);
                                        }
                            }
                        }
                    }
                }
            }
        }
    }
    for (int i1 = 0; i1 < 3; i1++) {
        for (int i2 = 0; i2 < 3; i2++) {
            for (int i3 = 0; i3 < 3; i3++) {
                for (int i4 = 0; i4 < 3; i4++) {
                    for (int i5 = 0; i5 < 3; i5++) {
                        for (int i6 = 0; i6 < 3; i6++) {
                            for (int i7 = 0; i7 < 3; i7++) {
                                for (int i8 = 0; i8 < 3; i8++) {
                                        int k = a[i1] * pow(10, 7) + a[i2] * pow(10, 6) + a[i3] * pow(10, 5) + a[i4] * pow(10, 4) + a[i5] * pow(10, 3) + a[i6] * pow(10, 2) + a[i7] * pow(10, 1) + a[i8];
                                        vector<int> cnt(3);
                                        cnt[i1]++;
                                        cnt[i2]++;
                                        cnt[i3]++;
                                        cnt[i4]++;
                                        cnt[i5]++;
                                        cnt[i6]++;
                                        cnt[i7]++;
                                        cnt[i8]++;
                                        if (cnt[0] >= 1 && cnt[1] >= 1 && cnt[2] >= 1) {
                                            res.push_back(k);
                                        }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    for (int i1 = 0; i1 < 3; i1++) {
        for (int i2 = 0; i2 < 3; i2++) {
            for (int i3 = 0; i3 < 3; i3++) {
                for (int i4 = 0; i4 < 3; i4++) {
                    for (int i5 = 0; i5 < 3; i5++) {
                        for (int i6 = 0; i6 < 3; i6++) {
                            for (int i7 = 0; i7 < 3; i7++) {
                                for (int i8 = 0; i8 < 3; i8++) {
                                    for (int i9 = 0; i9 < 3; i9++) {
                                        int k = a[i1] * pow(10, 8) + a[i2] * pow(10, 7) + a[i3] * pow(10, 6) + a[i4] * pow(10, 5) + a[i5] * pow(10, 4) + a[i6] * pow(10, 3) + a[i7] * pow(10, 2) + a[i8] * pow(10, 1) + a[i9];
                                        vector<int> cnt(3);
                                        cnt[i1]++;
                                        cnt[i2]++;
                                        cnt[i3]++;
                                        cnt[i4]++;
                                        cnt[i5]++;
                                        cnt[i6]++;
                                        cnt[i7]++;
                                        cnt[i8]++;
                                        cnt[i9]++;
                                        if (cnt[0] >= 1 && cnt[1] >= 1 && cnt[2] >= 1) {
                                            res.push_back(k);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    sort(res.begin(), res.end());
    res.insert(res.begin(), 0);
    res.push_back(pow(10, 9));
    for (int i = 0; i < res.size(); i++) {
        if (res[i] <= N && N < res[i + 1]) {
            cout << i << endl;
        }
    }
}

Measured memory_bytes: 512