One beautiful July morning a terrible thing happened in Mainframe: a mean virus Megabyte somehow got access to the memory of his not less mean sister Hexadecimal. He loaded there a huge amount of n different natural numbers from 1 to n to obtain total control over her energy.

But his plan failed. The reason for this was very simple: Hexadecimal didn't perceive any information, apart from numbers written in binary format. This means that if a number in a decimal representation contained characters apart from 0 and 1, it was not stored in the memory. Now Megabyte wants to know, how many numbers were loaded successfully.

Input

Input data contains the only number n (1 ≤ n ≤ 109).

Output

Output the only number — answer to the problem.

Examples

Input

10


Output

2

Note

For n = 10 the answer includes numbers 1 and 10.
#include <bits/stdc++.h>
using namespace std;
int powi(int a, int n) {
  if (n == 0) return 1;
  if (n == 1) return a;
  int k = powi(a, n / 2);
  if (n % 2 != 0) return a * k * k;
  return k * k;
}
int main() {
  vector<long int> v;
  for (int j = 1; j <= 512; j++) {
    vector<long int> b;
    int p = j;
    while (p) {
      int k = p % 2;
      b.push_back(k);
      p /= 2;
    }
    long int sum = 0;
    int x = 0;
    for (int i = b.size() - 1; i >= 0; i--) {
      sum = sum + (b[i] * powi(10, i));
      x++;
    }
    v.push_back(sum);
    for (int i = 0; i < b.size(); i++) {
      b.clear();
    }
  }
  int n;
  cin >> n;
  int k = 0;
  int count = 0;
  int t = 1;
  while (1) {
    if (n >= v[k]) {
      count++;
      k++;
    } else {
      t = 0;
      break;
    }
  }
  cout << count << endl;
}
