
type ABC(stream:System.IO.TextReader) =
  member this.Scan1 f = stream.ReadLine() |> f
  member this.Scan2 f = stream.ReadLine().Split() |> Array.map f |> (fun a -> (a.[0], a.[1]))
  member this.Scan3 f = stream.ReadLine().Split() |> Array.map f |> (fun a -> (a.[0], a.[1], a.[2]))
  member this.Scan4 f = stream.ReadLine().Split() |> Array.map f |> (fun a -> (a.[0], a.[1], a.[2], a.[3]))
  member this.ScanVecH f = stream.ReadLine().Split() |> Array.map f
  member this.ScanVecV n f = [ for i in 1..n -> stream.ReadLine() |> f ]
  member this.ScanMatrix n f  = [ for i in 1..n do yield stream.ReadLine().Split() |> Array.map f ]
  member this.ScanCharMatrix n = [| for i in 1..n -> stream.ReadLine().ToCharArray() |]
  member this.Close () = stream.Close()

let util = ABC(stdin)

let N = util.Scan1 int

let rec isOKR b1 b2 b3 n =
  match n with
  | 0 -> b1 && b2 && b3
  | n -> match n % 10 with
             | 3 -> isOKR true b2 b3 (n/10)
             | 5 -> isOKR b1 true b3 (n/10)
             | 7 -> isOKR b1 b2 true (n/10)
             | _ -> false

let isOK = isOKR false false false

seq { 357..2..N }
|> Seq.filter isOK
|> Seq.length
|> printfn "%d"

util.Close()
