#include <bits/stdc++.h>
using namespace std;
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
#define Bit(mask , i) ((mask >> i) & 1)
#define fi first
#define se second
#define _LOG2(nl) 31 - __builtin_clz(nl)
#define c_bit(nl) __builtin_popcount(nl)
#define ii pair<int , pair<int , int>>
#define lii pair<long long , pair<int , int>>
#define li pair<long long , int>
#define db double
#define onBit(mask , i) (mask | (1 << i))
#define offBit(mask , i) (mask & (~(1 << i)))
long long n;
long long f[12][3][3][3];
void inp(){
cin >> n;
}
long long dp(int pos , int lower , int parity , int find_st , string &x){
if (pos == x.size()){
return find_st;
}
if (f[pos][lower][parity][find_st] != -1) return f[pos][lower][parity][find_st];
int fin = 9;
if (lower) fin = x[pos] - '0';
long long res = 0;
for (int i = 0 ; i <= fin ; ++i){
int j = i % 2;
if (find_st){
if (!(j ^ parity))continue;
}
int n_lower = 0;
if (lower == 1 && i == fin) n_lower = 1;
int n_find_st = 1;
if (!find_st && i == 0) n_find_st = 0;
res += dp(pos + 1 , n_lower , j , n_find_st , x);
}
return f[pos][lower][parity][find_st] = res;
}
void solve(){
string s = to_string(n);
memset(f , -1 , sizeof f);
cout << dp(0 , 1 , 0 , 0 , s);
}
int main(){
if (fopen("cau3.inp" , "r")){
freopen("cau3.inp" , "r" , stdin);
freopen("cau3.out" , "w" , stdout);
}
faster;
inp();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmFzdGVyIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpCiNkZWZpbmUgQml0KG1hc2sgLCBpKSAoKG1hc2sgPj4gaSkgJiAxKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgX0xPRzIobmwpIDMxIC0gX19idWlsdGluX2NseihubCkKI2RlZmluZSBjX2JpdChubCkgX19idWlsdGluX3BvcGNvdW50KG5sKQojZGVmaW5lIGlpIHBhaXI8aW50ICwgcGFpcjxpbnQgLCBpbnQ+PgojZGVmaW5lIGxpaSBwYWlyPGxvbmcgbG9uZyAsIHBhaXI8aW50ICwgaW50Pj4KI2RlZmluZSBsaSBwYWlyPGxvbmcgbG9uZyAsIGludD4KI2RlZmluZSBkYiBkb3VibGUKI2RlZmluZSBvbkJpdChtYXNrICwgaSkgKG1hc2sgfCAoMSA8PCBpKSkKI2RlZmluZSBvZmZCaXQobWFzayAsIGkpIChtYXNrICYgKH4oMSA8PCBpKSkpCgpsb25nIGxvbmcgbjsKbG9uZyBsb25nIGZbMTJdWzNdWzNdWzNdOwoKdm9pZCBpbnAoKXsKICAgIGNpbiA+PiBuOwp9Cgpsb25nIGxvbmcgZHAoaW50IHBvcyAsIGludCBsb3dlciAsIGludCBwYXJpdHkgLCBpbnQgZmluZF9zdCAsIHN0cmluZyAmeCl7CiAgICBpZiAocG9zID09IHguc2l6ZSgpKXsKICAgICAgICByZXR1cm4gZmluZF9zdDsKICAgIH0KCiAgICBpZiAoZltwb3NdW2xvd2VyXVtwYXJpdHldW2ZpbmRfc3RdICE9IC0xKSByZXR1cm4gZltwb3NdW2xvd2VyXVtwYXJpdHldW2ZpbmRfc3RdOwoKICAgIGludCBmaW4gPSA5OwogICAgaWYgKGxvd2VyKSBmaW4gPSB4W3Bvc10gLSAnMCc7CiAgICBsb25nIGxvbmcgcmVzID0gMDsKICAgIGZvciAoaW50IGkgPSAwIDsgaSA8PSBmaW4gOyArK2kpewogICAgICAgIGludCBqID0gaSAlIDI7CiAgICAgICAgaWYgKGZpbmRfc3QpewogICAgICAgICAgICBpZiAoIShqIF4gcGFyaXR5KSljb250aW51ZTsKICAgICAgICB9CiAgICAgICAgaW50IG5fbG93ZXIgPSAwOwogICAgICAgIGlmIChsb3dlciA9PSAxICYmIGkgPT0gZmluKSBuX2xvd2VyID0gMTsKICAgICAgICBpbnQgbl9maW5kX3N0ID0gMTsKICAgICAgICBpZiAoIWZpbmRfc3QgICYmIGkgPT0gMCkgbl9maW5kX3N0ID0gMDsKICAgICAgICByZXMgKz0gZHAocG9zICsgMSAsIG5fbG93ZXIgLCBqICwgbl9maW5kX3N0ICwgeCk7CiAgICB9CiAgICByZXR1cm4gZltwb3NdW2xvd2VyXVtwYXJpdHldW2ZpbmRfc3RdID0gcmVzOwp9Cgp2b2lkIHNvbHZlKCl7CiAgICBzdHJpbmcgcyA9IHRvX3N0cmluZyhuKTsKICAgIG1lbXNldChmICwgLTEgLCBzaXplb2YgZik7CiAgICBjb3V0IDw8IGRwKDAgLCAxICwgMCAsIDAgLCBzKTsKfQoKaW50IG1haW4oKXsKICAgIGlmIChmb3BlbigiY2F1My5pbnAiICwgInIiKSl7CiAgICAgICAgZnJlb3BlbigiY2F1My5pbnAiICwgInIiICwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oImNhdTMub3V0IiAsICJ3IiAsIHN0ZG91dCk7CiAgICB9CiAgICBmYXN0ZXI7CiAgICBpbnAoKTsKICAgIHNvbHZlKCk7CiAgICByZXR1cm4gMDsKfQo=