#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e7 + 13;
const int modn = 1e9 + 7;
vector<int> v;
int x(int n) {
  if (n == 0) return 4;
  if (n == 1) return 7;
}
int main(int argc, char *argv[]) {
  ios::sync_with_stdio(false);
  int n = 0;
  cin >> n;
  for (int a9 = 0; a9 < 2; a9++) v.push_back(x(a9) * pow(10, 0));
  for (int a8 = 0; a8 < 2; a8++)
    for (int a9 = 0; a9 < 2; a9++)
      v.push_back(x(a8) * pow(10, 1) + x(a9) * pow(10, 0));
  for (int a7 = 0; a7 < 2; a7++)
    for (int a8 = 0; a8 < 2; a8++)
      for (int a9 = 0; a9 < 2; a9++)
        v.push_back(x(a7) * pow(10, 2) + x(a8) * pow(10, 1) +
                    x(a9) * pow(10, 0));
  for (int a6 = 0; a6 < 2; a6++)
    for (int a7 = 0; a7 < 2; a7++)
      for (int a8 = 0; a8 < 2; a8++)
        for (int a9 = 0; a9 < 2; a9++)
          v.push_back(x(a6) * pow(10, 3) + x(a7) * pow(10, 2) +
                      x(a8) * pow(10, 1) + x(a9) * pow(10, 0));
  for (int a5 = 0; a5 < 2; a5++)
    for (int a6 = 0; a6 < 2; a6++)
      for (int a7 = 0; a7 < 2; a7++)
        for (int a8 = 0; a8 < 2; a8++)
          for (int a9 = 0; a9 < 2; a9++)
            v.push_back(x(a5) * pow(10, 4) + x(a6) * pow(10, 3) +
                        x(a7) * pow(10, 2) + x(a8) * pow(10, 1) +
                        x(a9) * pow(10, 0));
  for (int a4 = 0; a4 < 2; a4++)
    for (int a5 = 0; a5 < 2; a5++)
      for (int a6 = 0; a6 < 2; a6++)
        for (int a7 = 0; a7 < 2; a7++)
          for (int a8 = 0; a8 < 2; a8++)
            for (int a9 = 0; a9 < 2; a9++)
              v.push_back(x(a4) * pow(10, 5) + x(a5) * pow(10, 4) +
                          x(a6) * pow(10, 3) + x(a7) * pow(10, 2) +
                          x(a8) * pow(10, 1) + x(a9) * pow(10, 0));
  for (int a3 = 0; a3 < 2; a3++)
    for (int a4 = 0; a4 < 2; a4++)
      for (int a5 = 0; a5 < 2; a5++)
        for (int a6 = 0; a6 < 2; a6++)
          for (int a7 = 0; a7 < 2; a7++)
            for (int a8 = 0; a8 < 2; a8++)
              for (int a9 = 0; a9 < 2; a9++)
                v.push_back(x(a3) * pow(10, 6) + x(a4) * pow(10, 5) +
                            x(a5) * pow(10, 4) + x(a6) * pow(10, 3) +
                            x(a7) * pow(10, 2) + x(a8) * pow(10, 1) +
                            x(a9) * pow(10, 0));
  for (int a2 = 0; a2 < 2; a2++)
    for (int a3 = 0; a3 < 2; a3++)
      for (int a4 = 0; a4 < 2; a4++)
        for (int a5 = 0; a5 < 2; a5++)
          for (int a6 = 0; a6 < 2; a6++)
            for (int a7 = 0; a7 < 2; a7++)
              for (int a8 = 0; a8 < 2; a8++)
                for (int a9 = 0; a9 < 2; a9++)
                  v.push_back(x(a2) * pow(10, 7) + x(a3) * pow(10, 6) +
                              x(a4) * pow(10, 5) + x(a5) * pow(10, 4) +
                              x(a6) * pow(10, 3) + x(a7) * pow(10, 2) +
                              x(a8) * pow(10, 1) + x(a9) * pow(10, 0));
  for (int a1 = 0; a1 < 2; a1++)
    for (int a2 = 0; a2 < 2; a2++)
      for (int a3 = 0; a3 < 2; a3++)
        for (int a4 = 0; a4 < 2; a4++)
          for (int a5 = 0; a5 < 2; a5++)
            for (int a6 = 0; a6 < 2; a6++)
              for (int a7 = 0; a7 < 2; a7++)
                for (int a8 = 0; a8 < 2; a8++)
                  for (int a9 = 0; a9 < 2; a9++)
                    v.push_back(x(a1) * pow(10, 8) + x(a2) * pow(10, 7) +
                                x(a3) * pow(10, 6) + x(a4) * pow(10, 5) +
                                x(a5) * pow(10, 4) + x(a6) * pow(10, 3) +
                                x(a7) * pow(10, 2) + x(a8) * pow(10, 1) +
                                x(a9) * pow(10, 0));
  for (int i = 0; i < v.size(); i++)
    if (v[i] == n) cout << i + 1;
  return 0;
}
