#include <bits/stdc++.h>
using namespace std;
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
int dx[] = {0, 0, -1, 1};
int dy[] = {1, -1, 0, 0};
vector<long long> a;
void dfs(long long n, long long x) {
  if (n > x) {
    a.push_back(x);
    x *= 10;
    dfs(n, x + 3);
    dfs(n, x + 5);
    dfs(n, x + 7);
  }
  return;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  long long n;
  cin >> n;
  dfs(n, long long(0));
  long long cnt = 0;
  for (int i = 0; i < (int)(a.size()); i++) {
    vector<int> mp(10, 0);
    string tmp = to_string(a[i]);
    for (int j = 0; j < (int)(tmp.size()); j++) {
      mp[tmp[j] - '0']++;
    }
    if (mp[3] != 0 && mp[5] != 0 && mp[7] != 0) {
      cnt++;
    }
  }
  cout << cnt << endl;
  return 0;
}
