#include <bits/stdc++.h>
#define MOD 1000000007LL
using namespace std;
typedef long long ll;
typedef pair<int,int> P;

string str;
ll dp[21][2][2][10000];

int nextl(int a,int l){
	l*=10;
	l+=a;
	l%=10000;
	return l;
}

bool istrue(int l){
	if(l%10!=3)return false;
	l/=100;
	if(l%10!=1)return false;
	l/=10;
	if(l%10!=5)return false;
	return true;
}

int main(void){
	cin >> str;
	int n=str.size();
	memset(dp,0,sizeof(dp));
	dp[0][0][0][0]=1;
	for(int i=0;i<n;i++){
		for(int j=0;j<2;j++){
			for(int k=0;k<2;k++){
				for(int l=0;l<10000;l++){
					int nj,nk,nl;
					if(j==0){
						for(int a=0;a<=(str[i]-'0');a++){
							if(a!=(str[i]-'0'))nj=j+1;
							else nj=j;
							nl=nextl(a,l);
							if(istrue(nl)){
								nk=1;
							}else{
								nk=k;
							}
							dp[i+1][nj][nk][nl]+=dp[i][j][k][l];
						}
					}else{
						for(int a=0;a<=9;a++){
							nj=j;
							nl=nextl(a,l);
							if(istrue(nl)){
								nk=1;
							}else{
								nk=k;
							}
							dp[i+1][nj][nk][nl]+=dp[i][j][k][l];
						}
					}
				}
			}
		}
	}
	ll ans=0;
	for(int i=0;i<2;i++){
		for(int j=0;j<10000;j++){
			ans+=dp[n][i][1][j];
		}
	}
	printf("%lld\n",ans);
	return 0;
}
