output_description: Print the number of the Shichi-Go-San numbers between 1 and N (inclusive).
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N
attempt: def rest(length):
      c = 0
      for i in range(3, length + 1):
          c += 3**i - 3 * (2**i) + 3
      return c
  
  
  def s(n):
      if n == "":
          return None
      if int(n) < 100:
          return 0
      head = n[0]
      tail = n[1:]
      length = len(tail)
      if head < "3":
          return rest(length)
      elif head == "3":
          return s3(tail) + rest(length)
      elif head == "4":
          return 3**length - 2 * 2**length + 1 + rest(length)
      elif head == "5":
          return s5(tail) + 3**length - 2 * 2**length + 1 + rest(length)
      elif head == "6":
          return 2 * (3**length - 2 * 2**length + 1) + rest(length)
      elif head == "7":
          return s7(tail) + 2 * (3**length - 2 * 2**length + 1) + rest(length)
      else:
          return 3 * (3**length - 2 * 2**length + 1) + rest(length)  #
  
  
  def s3(n):
      if n == "":
          return None
      if int(n) < 10:
          return 0
      head = n[0]
      tail = n[1:]
      length = len(tail)
      if head < "3":
          return 0
      elif head == "3":
          return s3(tail)
      elif head == "4":
          return 3**length - 2 * 2**length + 1
      elif head == "5":
          return s35(tail) + 3**length - 2 * 2**length + 1
      elif head == "6":
          return (3**length - 2 * 2**length + 1) + (3**length - 2**length)
      elif head == "7":
          return s37(tail) + (3**length - 2 * 2**length + 1) + (3**length - 2**length)
      else:
          return (3**length - 2 * 2**length + 1) + 2 * (3**length - 2**length)  #
  
  
  def s5(n):
      if n == "":
          return None
      if int(n) < 10:
          return 0
      head = n[0]
      tail = n[1:]
      length = len(tail)
      if head < "3":
          return 0
      elif head == "3":
          return s35(tail)
      elif head == "4":
          return 3**length - 2**length
      elif head == "5":
          return s5(tail) + 3**length - 2**length
      elif head == "6":
          return (3**length - 2 * 2**length + 1) + (3**length - 2**length)
      elif head == "7":
          return s57(tail) + (3**length - 2 * 2**length + 1) + (3**length - 2**length)
      else:
          return (3**length - 2 * 2**length + 1) + 2 * (3**length - 2**length)  #
  
  
  def s7(n):
      if n == "":
          return None
      if int(n) < 10:
          return 0
      head = n[0]
      tail = n[1:]
      length = len(tail)
      if head < "3":
          return 0
      elif head == "3":
          return s37(tail)
      elif head == "4":
          return 3**length - 2**length
      elif head == "5":
          return s57(tail) + 3**length - 2**length
      elif head == "6":
          return 2 * (3**length - 2**length)
      elif head == "7":
          return s7(tail) + 2 * (3**length - 2**length)
      else:
          return (3**length - 2 * 2**length + 1) + 2 * (3**length - 2**length)  #
  
  
  def s35(n):
      if n == "":
          return None
      if int(n) < 10:
          return 1 if int(n) >= 7 else 0
      head = n[0]
      tail = n[1:]
      length = len(tail)
      if head < "3":
          return 0
      elif head == "3":
          return s35(tail)
      elif head == "4":
          return 3**length - 2**length
      elif head == "5":
          return s35(tail) + 3**length - 2**length
      elif head == "6":
          return 2 * (3**length - 2**length)
      else:
          return 3**length + 2 * (3**length - 2**length)  #
  
  
  def s37(n):
      if n == "":
          return None
      if int(n) < 10:
          return 1 if int(n) >= 5 else 0
      head = n[0]
      tail = n[1:]
      length = len(tail)
      if head < "3":
          return 0
      elif head == "3":
          return s37(tail)
      elif head == "4":
          return 3**length - 2**length
      elif head == "5":
          return 3**length + 3**length - 2**length
      elif head == "6":
          return 3**length + 3**length - 2**length
      else:
          return 3**length + 2 * (3**length - 2**length)  #
  
  
  def s57(n):
      if n == "":
          return None
      if int(n) < 10:
          return 1 if int(n) >= 3 else 0
      head = n[0]
      tail = n[1:]
      length = len(tail)
      if head < "3":
          return 0
      elif head == "3":
          return 3**length
      elif head == "4":
          return 3**length
      elif head == "5":
          return 3**length + s57(tail)
      elif head == "6":
          return 3**length + 3**length - 2**length
      else:
          return 3**length + 2 * (3**length - 2**length)  #
  
  
  def main():
      n = input()
      print(s(n))
  
  
  if __name__ == "__main__":
      main()
  
problem_description: Statement
  
  You are given an integer N. Among the integers between 1 and N (inclusive),
  how many _Shichi-Go-San numbers_ (literally "Seven-Five-Three numbers") are
  there?
  
  Here, a Shichi-Go-San number is a positive integer that satisfies the
  following condition:
  
    * When the number is written in base ten, each of the digits `7`, `5` and `3` appears at least once, and the other digits never appear.
samples: [{"input": "575", "output": "4\n    \n\nThere are four Shichi-Go-San numbers not greater than 575: 357, 375, 537 and\n573.\n\n* * *"}, {"input": "3600", "output": "13\n    \n\nThere are 13 Shichi-Go-San numbers not greater than 3600: the above four\nnumbers, 735, 753, 3357, 3375, 3537, 3557, 3573, 3575 and 3577.\n\n* * *"}, {"input": "999999999", "output": "26484"}]