#include<bits/stdc++.h>
#define mod 1000000007
#define ll long int
#define big 100000000000000000
using namespace std;
ll n,k,ans,dp[1000010];
ll sieve[1000010]={0};
/*
ll recur(ll n){
if(n == 0)
return 0;
if(dp[n])
return dp[n];
ll temp = INT_MAX,x;
vector<ll>::iterator hi,lo;
hi = upper_bound(primes.begin(),primes.end(),sqrt(n));
lo = primes.begin();
if(hi == primes.end())
hi--;
for(;hi>=lo;hi--){
// cout<<n<<"-"<<*hi<<"\n";
x = n/(*hi);
if(sieve[x]==0 && n%(*hi)==0)
temp = min(temp,1+recur(n-x));
if(n%(*hi) == 0)
temp = min(temp,1+recur(n-(*hi)));
}
// cout<<n<<" "<<temp<<"\n";
return dp[n] = temp;
}*/
int main(){
// freopen("input.txt","r",stdin);
ios::sync_with_stdio(0);
ll i,j;
cin>>n;
for(i=2;i<=n;i=i+2)
sieve[i]=2;
for(i=3;i<=sqrt(n);i=i+2){
if(sieve[i] == 0){
for(j=1;i*j<=n;j=j+2)
{
if(sieve[i*j]==0)
sieve[i*j] = i;
}
}
}
for(i=2;i<=n;++i)
{
if(sieve[i]==0)
sieve[i] = i;
}
dp[0]=0;
dp[1]=0;
dp[2] = 1;
for(i=3;i<=n;++i)
{
ll x = i;
dp[i] = INT_MAX;
while(x>1)
{
dp[i] = min(dp[i],dp[i-sieve[x]]+1);
x = x/sieve[x];
}
}
/*for(i=0;i<=n;i++)
cout<<dp[i]<<" ";
cout<<"\n";*/
cout<<dp[n];
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBtb2QgMTAwMDAwMDAwNwojZGVmaW5lIGxsIGxvbmcgaW50CiNkZWZpbmUgYmlnIDEwMDAwMDAwMDAwMDAwMDAwMAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmxsIG4sayxhbnMsZHBbMTAwMDAxMF07CmxsIHNpZXZlWzEwMDAwMTBdPXswfTsKLyoKbGwgcmVjdXIobGwgbil7CglpZihuID09IDApCgkJcmV0dXJuIDA7CglpZihkcFtuXSkKCQlyZXR1cm4gZHBbbl07CglsbCB0ZW1wID0gSU5UX01BWCx4OwoJdmVjdG9yPGxsPjo6aXRlcmF0b3IgaGksbG87CgloaSA9IHVwcGVyX2JvdW5kKHByaW1lcy5iZWdpbigpLHByaW1lcy5lbmQoKSxzcXJ0KG4pKTsKCWxvID0gcHJpbWVzLmJlZ2luKCk7CglpZihoaSA9PSBwcmltZXMuZW5kKCkpCgkJaGktLTsKCWZvcig7aGk+PWxvO2hpLS0pewoJLy8JY291dDw8bjw8Ii0iPDwqaGk8PCJcbiI7CgkJeCA9IG4vKCpoaSk7CgkJaWYoc2lldmVbeF09PTAgJiYgbiUoKmhpKT09MCkKCQkJdGVtcCA9IG1pbih0ZW1wLDErcmVjdXIobi14KSk7CgkJaWYobiUoKmhpKSA9PSAwKQoJCQl0ZW1wID0gbWluKHRlbXAsMStyZWN1cihuLSgqaGkpKSk7Cgl9Ci8vCWNvdXQ8PG48PCIgIjw8dGVtcDw8IlxuIjsKCXJldHVybiBkcFtuXSA9IHRlbXA7Cn0qLwppbnQgbWFpbigpewovLwlmcmVvcGVuKCJpbnB1dC50eHQiLCJyIixzdGRpbik7Cglpb3M6OnN5bmNfd2l0aF9zdGRpbygwKTsKCQoJbGwgaSxqOwoJCgljaW4+Pm47Cglmb3IoaT0yO2k8PW47aT1pKzIpCgkJc2lldmVbaV09MjsKCWZvcihpPTM7aTw9c3FydChuKTtpPWkrMil7CgkJaWYoc2lldmVbaV0gPT0gMCl7CgkJCWZvcihqPTE7aSpqPD1uO2o9aisyKQoJCQl7CgkJCQlpZihzaWV2ZVtpKmpdPT0wKQoJCQkJCXNpZXZlW2kqal0gPSBpOwoJCQl9CgkJfQoJfQoJZm9yKGk9MjtpPD1uOysraSkKCXsKCQlpZihzaWV2ZVtpXT09MCkKCQkJc2lldmVbaV0gPSBpOwoJfQoJZHBbMF09MDsKCWRwWzFdPTA7CglkcFsyXSA9IDE7Cglmb3IoaT0zO2k8PW47KytpKQoJewoJCWxsIHggPSBpOwoJCWRwW2ldID0gSU5UX01BWDsKCQl3aGlsZSh4PjEpCgkJewoJCQlkcFtpXSA9IG1pbihkcFtpXSxkcFtpLXNpZXZlW3hdXSsxKTsKCQkJeCA9IHgvc2lldmVbeF07CgkJfQoJfQoJLypmb3IoaT0wO2k8PW47aSsrKQoJCWNvdXQ8PGRwW2ldPDwiICI7Cgljb3V0PDwiXG4iOyovCgljb3V0PDxkcFtuXTsKCXJldHVybiAwOwp9IA==