#include<iostream>
#include<vector>
#include<sstream>
#include<string>
#include<numeric>
#include <algorithm>
#include<math.h>
#include<cstdio>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>




using namespace std;
typedef long long ll;
struct point{
  int x;
  int y;

};
int gcd( int m, int n )
{
	// 引数に０がある場合は０を返す
	if ( ( 0 == m ) || ( 0 == n ) )
		return 0;
	
	// ユークリッドの方法
	while( m != n )
	{
		if ( m > n ) m = m - n;
		else         n = n - m;
	}
	return m;
}//gcd
int lcm( int m, int n )
{
	// 引数に０がある場合は０を返す
	if ( ( 0 == m ) || ( 0 == n ) )
		return 0;
	
	return ((m / gcd(m, n)) * n); // lcm = m * n / gcd(m,n)
}//lcm
int input(){
  int x;
  cin>>x;
  return x;
}

int moji(char in)
{
    int ans = (int)in-(int)'a';
    if((ans < 0) || (ans > 25)){
        ans = 26;
    }
    return ans;
}
const int VV=10;//場合に応じてVVの値のみ変更する必要あり
//dijkstra(s)sがスタート地点でそこからの最短距離を配列dで表す。正の重みのみ使用可能
int cost[VV][VV];
int d[VV];
bool used[VV];
void dijkstra(int s){
  fill(d,d+VV,100000);
  fill(used,used+VV,false);
  d[s]=0;
  while(true){
    int v=-1;
    for(int u=0;u<VV;u++){
      if(!used[u]&&(v==-1||d[u]<d[v]))v=u;
    }
    if(v==-1)break;
    used[v]=true;
    for(int u=0;u<VV;u++){
      d[u]=min(d[u],d[v]+cost[v][u]);
    }
  }

}

int compare_int(const void *a, const void *b)//qsort(quick sort利用時に使用)
{
    return *(int*)a - *(int*)b;
}





int main(){
  int N;
  cin>>N;
  int l[3];
  l[1]=3;
  l[2]=5;
  l[0]=7;
  int sum=0;
  if(1){
    for(int a=0;a<3;a++){
      for(int b=0;b<3;b++){
        for(int c=0;c<3;c++){
          int xx=l[a]*l[b]*l[c];
          int x=100*l[a]+10*l[b]+l[c];
          if(x<=N&&xx%105==0){
            sum++;
          }
        }
      }
    }
  }
  if(1){
    for(int a=0;a<3;a++){
      for(int b=0;b<3;b++){
        for(int c=0;c<3;c++){
          for(int d=0;d<3;d++){
            int xx=l[a]*l[b]*l[c]*l[d];
          int x=1000*l[d]+100*l[a]+10*l[b]+l[c];
          if(x<=N&&xx%105==0){
            sum++;
          }}
        }
      }
    }
  }
  if(1){
    for(int a=0;a<3;a++){
      for(int b=0;b<3;b++){
        for(int c=0;c<3;c++){
          for(int d=0;d<3;d++){
            for(int e=0;e<3;e++){
              int xx=l[a]*l[b]*l[c]*l[d]*l[e];
          int x=10000*l[e]+1000*l[d]+100*l[a]+10*l[b]+l[c];
          if(x<=N&&xx%105==0){
            sum++;
          }}}
        }
      }
    }
  }if(1){
    for(int a=0;a<3;a++){
      for(int b=0;b<3;b++){
        for(int c=0;c<3;c++){
          for(int d=0;d<3;d++){
            for(int e=0;e<3;e++){
              for(int f=0;f<3;f++){
                int xx=l[a]*l[b]*l[c]*l[d]*l[e]*l[f];
          int x=100000*l[f]+10000*l[e]+1000*l[d]+100*l[a]+10*l[b]+l[c];
          if(x<=N&&xx%105==0){
            sum++;
          }}}}
        }
      }
    }
  }if(1){
    for(int a=0;a<3;a++){
      for(int b=0;b<3;b++){
        for(int c=0;c<3;c++){
          for(int d=0;d<3;d++){
            for(int e=0;e<3;e++){
              for(int f=0;f<3;f++){
                for(int g=0;g<3;g++){
                  int xx=l[a]*l[b]*l[c]*l[d]*l[e]*l[f]*l[g];
          int x=1000000*l[g]+100000*l[f]+10000*l[e]+1000*l[d]+100*l[a]+10*l[b]+l[c];
          if(x<=N&&xx%105==0){
            sum++;
          }}}}}
        }
      }
    }
  }if(1){
    for(int a=0;a<3;a++){
      for(int b=0;b<3;b++){
        for(int c=0;c<3;c++){
          for(int d=0;d<3;d++){
            for(int e=0;e<3;e++){
              for(int f=0;f<3;f++){
                for(int g=0;g<3;g++){
                  for(int h=0;h<3;h++){
                    int xx=l[a]*l[b]*l[c]*l[d]*l[e]*l[f]*l[g]*l[h];
          int x=10000000*l[h]+1000000*l[g]+100000*l[f]+10000*l[e]+1000*l[d]+100*l[a]+10*l[b]+l[c];
          if(x<=N&&xx%105==0){
            sum++;
          }}}}}}
        }
      }
    }
  }if(1){
    for(int a=0;a<3;a++){
      for(int b=0;b<3;b++){
        for(int c=0;c<3;c++){
          for(int d=0;d<3;d++){
            for(int e=0;e<3;e++){
              for(int f=0;f<3;f++){
                for(int g=0;g<3;g++){
                  for(int h=0;h<3;h++){
                    for(int o=0;o<3;o++){
                      int xx=l[a]*l[b]*l[c]*l[d]*l[e]*l[f]*l[g]*l[h]*l[o];
          int x=100000000*l[o]+10000000*l[h]+1000000*l[g]+100000*l[f]+10000*l[e]+1000*l[d]+100*l[a]+10*l[b]+l[c];
          if(x<=N&&xx%105==0){
            sum++;
          }}}}}}}
        }
      }
    }
  }
  cout<<sum<<endl;
  

  



}


  
  


Measured memory_bytes: 888