#include #include #include #include #include #include #include #include using namespace std; vector a; unsigned long long stoiii(string s) { unsigned long long val = 0; for (char c : s) { val = val * 10 + (c - '0'); } return val; } void dfs(string curr) { if (!curr.empty() && curr[0] != '0') { a.push_back(stoiii(curr)); } if (curr.size() >= 9) { return; } for (int i = 0; i < 10; i++) { string c(1, i + '0'); dfs(c + curr + c); } } int main() { long long n; cin >> n; dfs(""); for (int i = 0; i < 10; i++) { dfs(string(1, '0' + i)); } int ans = 0; for (unsigned long long x : a) { unsigned long long y = 1000000000 * x + x; if (y <= n) { ans++; } } cout << ans << endl; }