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;
bool comp(int a, int b) { return a > b; }
bool lesser(string s, long long int n) {
  long long int ans = 0;
  int a = 0;
  for (int i = s.length() - 1; i >= 0; i--) {
    ans += pow(10, a) * (s[i] - '0');
    a++;
  }
  if (ans <= n && ans != 0) {
    return true;
  }
  return false;
}
void calculate(string s, long long int n, int b, int &counter) {
  if (s.size() == b) {
    if (lesser(s, n)) {
      counter++;
    }
    return;
  }
  s.push_back('1');
  calculate(s, n, b, counter);
  s.pop_back();
  s.push_back('0');
  calculate(s, n, b, counter);
  return;
}
int mxn = 100000;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t = 1;
  while (t--) {
    long long int n, m;
    cin >> n;
    int b = 0;
    m = n;
    while (m > 0) {
      m /= 10;
      b++;
    }
    int ans = 0;
    string s;
    calculate(s, n, b, ans);
    cout << ans << endl;
  }
  return 0;
}
