#include <bits/stdc++.h>
using namespace std;
int conversion(string p) {
  int o;
  o = atoi(p.c_str());
  return o;
}
string toString(int h) {
  stringstream ss;
  ss << h;
  return ss.str();
}
long long gcd(long long a, long long b) { return (b == 0 ? a : gcd(b, a % b)); }
long long lcm(long long a, long long b) { return (a * (b / gcd(a, b))); }
long long toi(string p) {
  long long x;
  istringstream in(p);
  in >> x;
  return x;
}
int main() {
  long long a, x, y;
  cin >> a;
  vector<long long> M;
  set<long long> S;
  for (int i = 0; i <= 9; i++) {
    for (int j = i + 1; j <= 9; j++) {
      x = i;
      y = j;
      if (x <= a && x > 0) {
        S.insert(x);
        M.push_back(i);
      }
      if (y <= a && y > 0) {
        S.insert(y);
        M.push_back(j);
      }
      for (int z = 0; z < M.size(); z++) {
        x = M[z] * 10 + i;
        y = M[z] * 10 + j;
        if (x <= a) {
          M.push_back(x);
          S.insert(x);
        }
        if (y <= a) {
          M.push_back(y);
          S.insert(y);
        }
      }
      M.clear();
    }
  }
  cout << S.size() << endl;
}
