SIEVE_SIZE = 100000
# SIEVE_SIZE = 100

def gen_sieve(n):
    prime = [True] * (n+1)
    prime[0] = False
    prime[1] = False
    p = 2
    while (p*p < n):
        if prime[p]:
            for i in range(p*p, n+1, p):
                prime[i] = False
        p += 1
    return prime

sieve = gen_sieve(SIEVE_SIZE)
primes = [n for n, is_p in enumerate(sieve) if is_p]

def is_prime(n):
    if n < len(sieve):
        return sieve[n]
    for p in primes:
        if p*p > n:
            break
        if n % p == 0:
            return False
    return True


cache = {}

def my_cache(func):
    def inner(arg):
        res = cache.get(arg, None)
        if res is not None:
            return res
        res = func(arg)
        cache[arg] = res
        return res

    return inner


@my_cache
def recursive(num_str):
    if len(num_str) == 0:
        return 0
    # print(num_str)
    n = int(num_str)
    num_str = str(n)
    if not is_prime(n):
        return 0
    return 1 + max(map(recursive, [num_str[:i] + num_str[i+1:] for i in range(len(num_str))]))

print(recursive(input()))