#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll dp[20][2][10][10][10],z;

ll Stoi(string s){
  ll res=0;
  for(ll i=0;i<(int)s.size();i++)res=res*10+s[i]-'0';
  return res;
}

ll Pow(ll a,ll b){
  ll res=1;
  while(b--)res*=a;
  return res;
}

string n;

ll dfs(ll id,ll f,ll a,ll b,ll c){
  if(dp[id][f][a][b][c]!=-1)return dp[id][f][a][b][c];
  if(id==(int)n.size())return 0;
  ll r=9,res=0;
  if(!f)r=n[id]-'0';
  for(ll d=0;d<=r;d++){
    ll nf=f;
    if(d<r)nf=1;
    if(a==5&&b==1&&d==3){
      if(nf) res+=Pow(10,n.size()-id-1);
      else res+=Stoi(n.substr(id+1))+1;
    }
    else{
      res+=dfs(id+1,nf,b,c,d);
    }
  }
  return dp[id][f][a][b][c]=res;
}

int main(){
  cin>>n;
  memset(dp,-1,sizeof(dp));
  cout<<dfs(0,0,0,0,0)<<endl;
  return 0;
}
