#include <bits/stdc++.h>
using namespace std;
long long cei(long long x, long long y) {
  long long ans = x / y;
  if (x % y != 0) ans++;
  return ans;
}
long long gcd(long long x, long long y) { return y ? gcd(y, x % y) : x; }
long long lcm(long long x, long long y) { return x / gcd(x, y) * y; }
long long llpow(long long x, long long n) {
  long long i, ans = 1;
  for ((i) = (0); (i) < (n); (i)++) ans *= x;
  return ans;
}
long long fact(long long x) {
  long long i, ans = 1;
  for ((i) = (0); (i) < (x); (i)++) ans *= (x - i);
  return ans;
}
long long ncr(long long n, long long r) {
  return fact(n) / fact(r) / fact(n - r);
}
long long npr(long long n, long long r) { return fact(n) / fact(n - r); }
bool prime(long long a) {
  if (a <= 1) return false;
  long long i;
  for (i = 2; i * i <= a; i++) {
    if (a % i == 0) return false;
  }
  return true;
}
long long ans = 0;
long long i, j, k;
int main() {
  vector<int> X(1000000011);
  X.at(0) = 0;
  for (int i = 1; i < 1000000010; i++) {
    int x = 1;
    while (i != 0) {
      if ((i % 10) != '7' || (i % 10) != '5' || (i % 10) != '3') x *= 0;
      i /= 10;
    }
    if (x == 1) X.at(i) = X.at(i - 1) + 1;
  }
  int N;
  cin >> N;
  cout << X.at(N);
  return 0;
}
