"""
당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 
손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러줘야 할 동전의 최소 개수를 구하라.
단, 거슬러줘야 할 돈 N은 항상 10의 배수이다. 
"""

N = int(input()) #거슬러줘야 할 돈

cList = [500, 100, 50, 10]  #동전종류 리스트, 큰 금액으로 거슬러 주기 시작한다. 

count = 0   #동전 개수 카운팅

for coin in cList:
    count += int(N / coin)  #동전 개수를 세고
    N = int(N%coin) #현재 화폐로 거슬러주고 남은 돈을 계산한다.

print(count)

'''
동전의 종류 개수 K만큼 for문을 돌아야 하므로 시간 복잡도는 O(K)이다.

그리디 알고리즘의 기본. 가장 큰 화폐부터 돈을 거슬러준다. 
'''