#include #include #include #include #include using namespace std; typedef long long ll; ll a[15]; int digit(ll a); vectorv[15]; int main() { ll N; scanf("%lld",&N); int i, j, k; a[1] = 9ll; a[2] = 9ll; for (i = 3; i < 12; i+=2) { a[i] = (a[i - 1] + 1ll) * 9ll; a[i + 1] = a[i]; } if (N < 1000000001ll) { printf("0\n"); } else { ll sum = 0ll; int d = digit(N); for (i = 10; i < d; i++) { sum += a[i - 9]; } for (i = 1; i <= 9; i++) { string s = to_string(i); for (j = 1; j <= 8; j++) { s += to_string(0); } s += to_string(i); v[1].push_back(s); } for (i = 11; i <= 99; i++) { if (i / 10 == i % 10) { string s = to_string(i); for (j = 1; j <= 7; j++) { s += to_string(0); } s += to_string(i); v[2].push_back(s); } } for (i = 3; i <= 11; i++) { for (k = 1; k <= 9; k++) { string ss = to_string(k); for (j = 0; j < i - 2; j++) { ss += to_string(0); } ss += to_string(k); v[i].push_back(ss); } for (k = 1; k <= 9; k++) { for (j = 0; j < v[i - 2].size(); j++) { string s = to_string(k); s += v[i - 2][j]; s += to_string(k); v[i].push_back(s); } } } for (i = 0; i < v[d - 9].size(); i++) { if (stoll(v[d - 9][i])<=N) { sum += 1ll; } } printf("%lld\n",sum); } return 0; } int digit(ll a) { int ret = 0; while (1) { if (a == 0ll) { break; } ret++; a /= 10ll; } return ret; }