#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <math.h>
#include <cstdio>
using namespace std;

int koliko(unsigned long long int v)
{
    int k=0;
    unsigned long long int dv=v;
    while (dv/10>0)
    {
        dv=dv/10;
        k++;
    }
    return k;

}

unsigned long long stepen(int n,int dk)
{
    unsigned long long x=1;
    for (int i=0;i<dk;i++)
        x=x*10;
    return x*n;
}

int ukupno(unsigned long long dv, int dk)
{
    int br=0;
    unsigned long long p1=stepen(5,dk);
    unsigned long long p2=stepen(2,dk);
    unsigned long long p3=stepen(1,dk);
    while (dv>0 && dk>=0)
    {
        if (dv==p1 || dv==p2 || dv==p3) return br+1;
        if (dv>=p1)
       {
           if (dv>=2*p1)
           {
               while (dv>=p1)
               {
                   dv-=p1;
                   br++;
               }
           }
           else{dv-=p1;
           br++;}
       }
        if (dv>=p2)
       {
           if (dv>=2*p2)
           {
               while (dv>=p2)
               {
                   dv-=p2;
                   br++;
               }
           }

           else {dv-=p2;
           br++;}
       }
        if(dv>=p3)
       {
           if (dv>=2*p3)
           {

               while (dv>=p3)
               {
                   dv-=p3;
                   br++;
                }
           }
           else{dv-=p3;
           br++;}
       }
       dk--;
       p1=p1/10;
       p2=p2/10;
       p3=p3/10;
    }
    return br;
}

int main()
{
    unsigned long long int v,dv;
    int d;
    int k=0, br=0;
    scanf("%llu",&v);
    dv=v;
    k=koliko(v);
    int dk=k;
    if (dv==stepen(1,dk) || dv==stepen(2,dk) || dv==stepen(5,dk)) printf("1");
    else{
    printf("%d", ukupno(dv,dk));
    }
    return 0;
}