#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
typedef long long ll;

ll keta;
int nextm;
int multi;
ll get() {
	if (multi == nextm) {
		if (keta % 2 == 1) {
			keta++;
			multi /= 10;
		}
		else {
			keta++;
			nextm *= 10;
		}
	}
	string s = to_string(multi);
	ll ret = 0;
	for (int i = 0; i < s.size(); i++)	ret = (ret * 10) + (s[i] - '0');
	if (keta % 2 == 1) {
		for (int i = s.size() - 2; i >= 0; i--)	ret = (ret * 10) + (s[i] - '0');
	}
	else {
		for (int i = s.size() - 1; i >= 0; i--)	ret = (ret * 10) + (s[i] - '0');
	}
	return ret;
}

int main() {
	ll n;	cin >> n;
	ll cnt = 0;
	ll base = 1e9 + 1;
	keta = 1;
	multi = 1;
	nextm = 10;
	while (n >= base*get()) {
		cnt++;
		multi++;
	}
	cout << cnt << endl;
}