// ROOT : DRAGON3012009 : WA in Real Life
#include <bits/stdc++.h>
#define FOR(i,l,r) for(int i = l ; i <= r ; i ++)
#define FORD(i,r,l) for(int i = r ; i >= l ; i --)
#define REP(i, a ) for(int i = 0 ; i < a ; i ++ )
#define compare(v) sort((v).begin(), (v).end()); (v).erase(unique((v).begin(), (v).end()), (v).end());
#define ll long long
#define el "\n"
#define fi first
#define se second
#define _ROOT_ int main()
#define M 1000000007
#define MAXN 1000001
#define INF (1ll<<30)
#define NAME "file"
using namespace std;
ll n, m , q ;
string s;
ll dp[16][16 * 9 ][16 * 9 ][20] ;
bool snt(ll a ){
if(a <= 1) return false ;
if(a == 2 ) return true ;
for(ll i = 2 ; i * i <= a ; i ++ ) if(a % i == 0 ) return false ;
return true ;
}
ll DP(ll pos , ll tcs_a ,ll tcs_b , ll nho , string & so ) {
ll &cur = dp[pos][tcs_a][tcs_b][nho] ;
if(pos == 0 ) {
if(snt(tcs_a) && snt(tcs_b) && nho == 0 ) return cur = 1 ;
else return cur = 0 ;
}
if(cur != -1 ) return cur ;
cur = 0 ;
FOR(x , 0 , 9 ) FOR(y , 0 , 9 ) {
ll so_hien_tai = (x + 2*y + nho ) % 10 ;
ll nxt_nho = (x + 2 * y + nho ) / 10 ;
if(so_hien_tai == so[pos] -'0' ) {
cur += DP(pos - 1 , tcs_a + x , tcs_b + y , nxt_nho , so ) ;
}
}
return cur ;
}
void init() {
cin >> s ;
n = s.size() ;
s = " " + s ;
}
void solve() {
memset(dp , -1 , sizeof dp ) ;
cout << DP(n , 0 , 0 , 0 , s ) << el ;
}
_ROOT_ {
// freopen(NAME".inp" , "r" , stdin);
// freopen(NAME".out" , "w", stdout) ;
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t = 1; // cin >> t ;
while(t--) {
init();
solve();
}
return (0&0);
}
Ly8gUk9PVCA6IERSQUdPTjMwMTIwMDkgOiBXQSBpbiBSZWFsIExpZmUKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgRk9SKGksbCxyKSBmb3IoaW50IGkgPSBsIDsgaSA8PSByIDsgaSArKykKI2RlZmluZSBGT1JEKGkscixsKSBmb3IoaW50IGkgPSByIDsgaSA+PSBsIDsgaSAtLSkKI2RlZmluZSBSRVAoaSwgYSApIGZvcihpbnQgaSA9IDAgOyBpIDwgYSA7IGkgKysgKQojZGVmaW5lIGNvbXBhcmUodikgc29ydCgodikuYmVnaW4oKSwgKHYpLmVuZCgpKTsgKHYpLmVyYXNlKHVuaXF1ZSgodikuYmVnaW4oKSwgKHYpLmVuZCgpKSwgKHYpLmVuZCgpKTsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlbCAiXG4iCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBfUk9PVF8gaW50IG1haW4oKQojZGVmaW5lIE0gMTAwMDAwMDAwNwojZGVmaW5lIE1BWE4gMTAwMDAwMQojZGVmaW5lIElORiAoMWxsPDwzMCkKI2RlZmluZSBOQU1FICJmaWxlIgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbGwgbiwgbSAsIHEgOwpzdHJpbmcgczsKbGwgZHBbMTZdWzE2ICogOSBdWzE2ICogOSBdWzIwXSA7Cgpib29sIHNudChsbCBhICl7CmlmKGEgPD0gMSkgcmV0dXJuIGZhbHNlIDsKaWYoYSA9PSAyICkgcmV0dXJuIHRydWUgOwpmb3IobGwgaSA9IDIgOyBpICogaSA8PSBhIDsgaSArKyApIGlmKGEgJSBpID09IDAgKSByZXR1cm4gZmFsc2UgOwpyZXR1cm4gdHJ1ZSA7Cn0KCmxsIERQKGxsIHBvcyAsIGxsIHRjc19hICxsbCB0Y3NfYiAsIGxsIG5obyAsIHN0cmluZyAmIHNvICAgKSB7CmxsICZjdXIgPSBkcFtwb3NdW3Rjc19hXVt0Y3NfYl1bbmhvXSA7CmlmKHBvcyA9PSAwICkgewogICAgaWYoc250KHRjc19hKSAmJiBzbnQodGNzX2IpICYmIG5obyA9PSAwICkgcmV0dXJuIGN1ciA9IDEgOwogICAgZWxzZSByZXR1cm4gY3VyID0gMCA7Cn0KaWYoY3VyICE9IC0xICkgcmV0dXJuIGN1ciA7CmN1ciA9IDAgOwpGT1IoeCAsIDAgLCA5ICkgRk9SKHkgLCAwICwgOSApIHsKICAgIGxsIHNvX2hpZW5fdGFpID0gKHggKyAyKnkgKyBuaG8gKSAlIDEwIDsKICAgIGxsIG54dF9uaG8gPSAoeCArIDIgKiB5ICsgbmhvICkgLyAxMCA7CiAgICBpZihzb19oaWVuX3RhaSA9PSBzb1twb3NdIC0nMCcgKSB7CiAgICAgICAgY3VyICs9IERQKHBvcyAtIDEgLCB0Y3NfYSArIHggLCB0Y3NfYiArIHkgLCBueHRfbmhvICwgc28gKSA7CiAgICB9Cn0KcmV0dXJuIGN1ciA7Cn0KCnZvaWQgaW5pdCgpIHsKICAgIGNpbiA+PiBzIDsKICAgIG4gPSBzLnNpemUoKSA7CiAgICBzID0gIiAiICsgcyA7Cn0KCnZvaWQgc29sdmUoKSB7CiAgICBtZW1zZXQoZHAgLCAtMSAsIHNpemVvZiBkcCApIDsKICAgIGNvdXQgPDwgRFAobiAsIDAgLCAwICwgMCAsIHMgICkgPDwgZWwgOwp9CgpfUk9PVF8gewogICAgLy8gZnJlb3BlbihOQU1FIi5pbnAiICwgInIiICwgc3RkaW4pOwogICAgLy8gZnJlb3BlbihOQU1FIi5vdXQiICwgInciLCBzdGRvdXQpIDsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY291dC50aWUoMCk7CiAgICBpbnQgdCA9IDE7IC8vIGNpbiA+PiB0IDsKICAgIHdoaWxlKHQtLSkgewogICAgICAgIGluaXQoKTsKICAgICAgICBzb2x2ZSgpOwogICAgfQogICAgcmV0dXJuICgwJjApOwp9Cg==