#include<bits/stdc++.h>
using namespace std;
#define max(a,b) (a>b?a:b)
int main(){
int n;
int Max=0;
scanf("%d",&n);
while(n)
{
Max=max(Max,n%10);
n/=10;
}
printf("%d\n",Max);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define Map1(a,b) map<a,b>
#define Map2(a,b) unordered_map<a,b>
const int maxn=1000000+100;
const int INF=0x3f3f3f3f;
int dp[maxn];
int ans[maxn]={0,1},tot=1;
Map2(int,int) M;
int main(){
int start=0;
M[0]=M[1]=1;
while(true){
int tmp=ans[start]*10;
if(!M.count(tmp)) ans[++tot]=tmp,M[tmp]=1;
tmp=ans[start]*10+1;
if(!M.count(tmp)) ans[++tot]=tmp,M[tmp]=1;
if(ans[tot]>1e6) break;
start++;
}
sort(ans,ans+tot+1);
int n;
scanf("%d",&n);
for(int i=0;i<maxn;i++) dp[i]=INF;
dp[0]=0;
for(int i=0;i<=tot;i++){
for(int j=ans[i];j<=n;j++) dp[j]=min(dp[j],dp[j-ans[i]]+1);
}
printf("%d\n",dp[n]);
}