// 问题描述
// 一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如 1135
// 是一个数位递增的数,而 1024不是一个数位递增的数。
// 给定正整数 n ,请问在整数 1 至 n中有多少个数位递增的数?
// 输入格式
// 输入的第一行包含一个整数 n
// 输出格式
// 输出一行包含一个整数,表示答案。
// 评测用例规模与约定
// 对于 40%
// 的评测用例,1<=n<=1000。
// 对于 80% 的评测用例,1<=n<=100000。
// 对于所有评测用例,1<=n<=1000000。
//暴力:循环(1,n) 每一个数,然后判断每位是否递增
//灵活一点:构造从1-n的数位递增的数(递归
#include<bits/stdc++.h>
using namespace std;
int n;
int sum = 0;
void dfs(int num)
{
for(int i = num%10 ? num%10 : 1; i <= 9; i++){
if(num*10+i <= n){
sum++;
dfs(num*10+i);
}
}
}
int main()
{
cin>>n;
dfs(0); //从零开始构造数位递增
cout<<sum<<endl;
return 0;
}