#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<deque>
#include<string>
#include<string.h>
#include<vector>
#include<set>
#include<map>
#include<stdlib.h>
using namespace std;
const long long mod=1000000007;
const long long inf=mod*mod;
const long long d2=500000004;
int dp[510000];
char in[510000];
int cnt;
void dfs(int a,int b){
	dp[a]-=b;
	if(a==0)return;
	while(1){
	//	cnt++;
		if(dp[a-1]<=dp[a])return;
		int at=0;
		int sa=dp[a-1]-dp[a];
		for(int i=a-1;i>=0;i--){
			if(dp[i]!=dp[a-1])break;
			at++;
		}
		for(int i=a-at;i<a;i++){
			if(i-(a-at)<sa)dp[i]+=(i-(a-at))*9-1;
			else dp[i]+=sa*9;
		}
		dp[a]+=min(sa,at)*10;
		int t=dp[a-1];
		int nd=(dp[a-1]-dp[a]+10)/11;
		//if(a>=2&&dp[a-1]-nd<dp[a-2])nd=(dp[a-1]-dp[a]+20)/11;
		//printf("%d %d\n",a,nd);
		dfs(a-1,nd);
		dp[a]+=nd*10;
	}
}
int main(){
	scanf("%s",in);
	int n=strlen(in);
	for(int i=0;i<n;i++)dp[i]=in[i]-'0';
	for(int i=0;i<n;i++){
		dfs(i,0);
	//	for(int j=0;j<=i;j++)printf("%d ",dp[j]);
	//	printf("\n");
	}
	//printf("%d\n",cnt);
	printf("%d\n",(dp[n-1]+8)/9);
}