#include <bits/stdc++.h>
using namespace std;
multiset<int> st = {};
void f(long long int a) {
  if (a > 1000000000) return;
  st.insert(a);
  f(10 * a + 3);
  f(10 * a + 5);
  f(10 * a + 7);
}
void g(long long int a) {
  if (a > 1000000000) return;
  st.erase(a);
  g(10 * a + 3);
  g(10 * a + 5);
}
void h(long long int a) {
  if (a > 1000000000) return;
  st.erase(a);
  h(10 * a + 3);
  h(10 * a + 7);
}
void i(long long int a) {
  if (a > 1000000000) return;
  st.erase(a);
  i(10 * a + 5);
  i(10 * a + 7);
}
int main() {
  f(0);
  g(0);
  h(0);
  i(0);
  int N;
  cin >> N;
  st.insert(N);
  int ans = 0;
  for (auto itr = st.begin(); itr != st.end(); itr++) {
    ans++;
    if (N < *itr) break;
  }
  cout << ans - 1 << endl;
  return 0;
}
