#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(i,a,b) for(int i=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define ALL(v) (v).begin(),(v).end() template inline bool chmax(A &a, B b) { if (a inline bool chmin(A &a, B b) { if (a>b) { a=b; return 1; } return 0; } typedef long long ll; typedef pair pii; typedef pair pll; typedef pair P; #define INF (1<<29) #define INFL (1ll<<60) #define EPS (1e-8) #define PI (acos(-1)) const ll MOD = 1000000007ll; vector v; string to_str(ll x) { stringstream ss; ss << x; return ss.str(); } void make(ll seed) { FOR(i, 1, 10) v.push_back(to_str(1000000001ll * seed * i)); //cout << *(v.end() - 1) << endl; } int main() { ll n; cin >> n; FOR(i, 2, 9) make(powl(10, i) + 1); make(1); make(11); make(111); make(1111); make(11111); make(111111); make(1111111); make(11111111); make(111111111); make(1); make(101); make(10101); make(1010101); make(101010101); make(1010101); make(10100101); make(101000101); make(10101); make(1001001); make(100010001); make(100101001); make(1111); make(11011); make(110011); make(1100011); make(11000011); make(110000011); make(11011011); make(110101011); make(110111011); make(1110111); make(11100111); make(111000111); make(111010111); make(111101111); make(101101); make(1011101); make(10111101); make(10011001); make(100111001); sort(ALL(v)); v.erase(unique(ALL(v)), v.end()); int ans = 0; REP(i, v.size()) { ll now; stringstream ss(v[i]); ss >> now; if (n < now) continue; ans++; } cout << ans << endl; return 0; }