from sys import setrecursionlimit, stdin from collections import defaultdict, deque from itertools import permutations, combinations, product from functools import lru_cache from random import sample, choice, randint, random from heapq import heappush, heappop from math import factorial, exp from copy import copy, deepcopy from time import time from bisect import bisect_left, bisect_right setrecursionlimit(1 << 20) readline = stdin.readline # @lru_cache(maxsize=None) INF = 10 ** 18 MOD = 998244353 # MOD = 1000000007 DYDX = [(-1, 0), (1, 0), (0, -1), (0, 1)] ''' Input ''' def I(): return int(readline()) def S(): return readline()[:-1] def LI(): return list(map(int, readline().split())) def LII(): return list(map(lambda x: int(x)-1, readline().split())) def SPI(): return map(int, readline().split()) def SPII(): return map(lambda x: int(x)-1, readline().split()) def FIE(x): return [readline()[:-1] for _ in [0] * x] def NODE(N, edge): ret = [[] for _ in [0] * N] for _ in [0] * edge: a, b = SPII() ret[a].append(b) ret[b].append(a) return ret ''' Array ''' def cmin(dp, i, x): if x < dp[i]: dp[i] = x def cmax(dp, i, x): if x > dp[i]: dp[i] = x ''' Sorted Array ''' # x <= A[i] (minimum i meeting the requirement) def binary(sortedA, x): return bisect_left(sortedA, x) # x < A[i] (minimum i meeting the requirement) def binary2(sortedA, x): return bisect_right(sortedA, x + 1) # number of x in A def quantity(sortedA, x): return bisect_right(sortedA, x) - bisect_left(sortedA, x) ''' Other''' def ranges(*args): return [(i, j) for i in range(args[0]) for j in range(args[-1])] def nynx(y, x, ly = INF, lx = INF): return [(y + dy, x + dx) for dy, dx in DYDX if 0 <= y + dy < ly and 0 <= x + dx < lx] def gen(x, *args): ret = [x] * args[-1] for e in args[:-1][::-1]: ret = [deepcopy(ret) for _ in [0] * e] return ret def is_prime(x): if x == 1 or x % 2 == 0: return x == 2 f = 3 while f * f <= x: if x % f == 0: return False f += 2 return True ''' Output ''' def puts(E): for e in E: print(e) def pprint(E): print() for e in E: print(e) def yn(x): print("Yes" if x else "No") def blank(arr): print(" ".join(map(str, arr))) def debug(*args): if DEBUG: for e in args: print(e) DEBUG = False ############################################################################################### s = input() ans = 0 for i in range(1 << len(s) - 1): total = 0 now = int(s[0]) for j in range(len(s) - 1): if i >> j & 1: total += now now = 0 else: now *= 10 now += int(s[j+1]) total += now ans += is_prime(total) print(ans)