#include <bits/stdc++.h>
using namespace std;
int N;
bool check(int s) {
  int dig = to_string(s).length();
  bool is_exist[3] = {false, false, false};
  for (int i = 0; i < dig; i++) {
    if (s % 10 == 7) {
      is_exist[0] = true;
    } else if (s % 10 == 5) {
      is_exist[1] = true;
    } else if (s % 10 == 3) {
      is_exist[2] = true;
    }
    s /= 10;
  }
  if (is_exist[0] && is_exist[1] && is_exist[2]) {
    return true;
  } else {
    return false;
  }
}
int rec(int s, bool is_checked) {
  if (s > N) {
    return 0;
  }
  int ans = 0;
  if (is_checked || check(s)) {
    ans++;
    ans += rec(s * 10 + 7, true);
    ans += rec(s * 10 + 5, true);
    ans += rec(s * 10 + 3, true);
  } else {
    ans += rec(s * 10 + 7, false);
    ans += rec(s * 10 + 5, false);
    ans += rec(s * 10 + 3, false);
  }
  return ans;
}
int main() {
  cin >> N;
  cout << rec(0, false);
}
