
from typing import SupportsIndex

import numpy as np
from scipy.ndimage import convolve
def lowerCamelCase_       (			A			:      np.ndarray		,					A			:      np.ndarray		,					A			:      np.ndarray						):




      """simple docstring"""
      lowerCAmelCase_						=      np.stack((horizontal_flow, vertical_flow)		,					2						)

      # Create a grid of all pixel coordinates and subtract the flow to get the
      # target pixels coordinates
      lowerCAmelCase_						=      np.stack(
          np.meshgrid(np.arange(0		,					image.shape[1]						)		,					np.arange(0		,					image.shape[0]						)						)		,					2						)
      lowerCAmelCase_						=      np.round(grid - flow						).astype(np.intaa						)

      # Find the locations outside of the original image
      lowerCAmelCase_						=      (grid < 0) | (grid >= np.array([image.shape[1], image.shape[0]]						))
      lowerCAmelCase_						=      0

      lowerCAmelCase_						=      image[grid[:, :, 1], grid[:, :, 0]]

      # Set pixels at invalid locations to 0
      lowerCAmelCase_						=      0

      return warped
def lowerCamelCase_       (			A			:      np.ndarray		,					A			:      np.ndarray		,					A			:      SupportsIndex		,					A			:      float | None = None		,					):




      """simple docstring"""






      if alpha is None:
            lowerCAmelCase_						=      0.1

      # Initialize flow
      lowerCAmelCase_						=      np.zeros_like(A						)
      lowerCAmelCase_						=      np.zeros_like(A						)

      # Prepare kernels for the calculation of the derivatives and the average velocity
      lowerCAmelCase_						=      np.array([[-1, 1], [-1, 1]]						) * 0.2_5
      lowerCAmelCase_						=      np.array([[-1, -1], [1, 1]]						) * 0.2_5
      lowerCAmelCase_						=      np.array([[1, 1], [1, 1]]						) * 0.2_5
      lowerCAmelCase_						=      np.array(
          [[1 / 12, 1 / 6, 1 / 12], [1 / 6, 0, 1 / 6], [1 / 12, 1 / 6, 1 / 12]]						)

      # Iteratively refine the flow
      for _ in range(A						):
            lowerCAmelCase_						=      warp(A		,					A		,					A						)
            lowerCAmelCase_						=      convolve(A		,					A						) + convolve(A		,					A						)
            lowerCAmelCase_						=      convolve(A		,					A						) + convolve(A		,					A						)
            lowerCAmelCase_						=      convolve(A		,					A						) + convolve(A		,					-kernel_t						)

            lowerCAmelCase_						=      convolve(A		,					A						)
            lowerCAmelCase_						=      convolve(A		,					A						)

            # This updates the flow as proposed in the paper (Step 12)
            lowerCAmelCase_						=      (
                derivative_x * avg_horizontal_velocity
                + derivative_y * avg_vertical_velocity
                + derivative_t
            )
            lowerCAmelCase_						=      update / (alpha**2 + derivative_x**2 + derivative_y**2)

            lowerCAmelCase_						=      avg_horizontal_velocity - derivative_x * update
            lowerCAmelCase_						=      avg_vertical_velocity - derivative_y * update

      return horizontal_flow, vertical_flow


if __name__ == "__main__":
 import doctest

 doctest.testmod()






def _a					(			SCREAMING_SNAKE_CASE						:     int = 10_00						)       ->       int:

 """simple docstring"""






 __lowerCAmelCase:  Tuple        = [0, 3, 3, 5, 4, 4, 3, 5, 5, 4, 3, 6, 6, 8, 8, 7, 7, 9, 8, 8]
 # number of letters in twenty, thirty, ..., ninety (0 for numbers less than
 # 20 due to inconsistency in teens)
 __lowerCAmelCase:  List[Any]        = [0, 0, 6, 6, 5, 5, 5, 7, 6, 6]

 __lowerCAmelCase:  Dict        = 0

 for i in range(1       ,   n + 1						):
  if i < 10_00:
   if i >= 1_00:
    # add number of letters for "n hundred"
    count += ones_counts[i // 1_00] + 7

    if i % 1_00 != 0:
     # add number of letters for "and" if number is not multiple
     # of 100
     count += 3

   if 0 < i % 1_00 < 20:
    # add number of letters for one, two, three, ..., nineteen
    # (could be combined with below if not for inconsistency in
    # teens)
    count += ones_counts[i % 1_00]
   else:
    # add number of letters for twenty, twenty one, ..., ninety
    # nine
    count += ones_counts[i % 10]
    count += tens_counts[(i % 1_00 - i % 10) // 10]
  else:
   count += ones_counts[i // 10_00] + 8
 return count


if __name__ == "__main__":
  print(solution(int(input().strip())))





