#include <bits/stdc++.h>
using namespace std;
int main() {
  long long n;
  cin >> n;
  set<long long> divset;
  divset.insert(1);
  divset.insert(n);
  long long tot = 0;
  long long i = 2;
  while (i * i < n) {
    if (n % i == 0) {
      divset.insert(i);
      divset.insert(n / i);
    }
    i++;
  }
  if (i * i == n) divset.insert(i);
  map<long long, long long> mp;
  long long rem;
  while (n != 0) {
    rem = n % 10;
    n = n / 10;
    mp[rem] = 1;
  }
  set<long long>::iterator it = divset.begin();
  for (; it != divset.end(); it++) {
    long long val = *(it);
    while (val != 0) {
      rem = val % 10;
      val = val / 10;
      if (mp.find(rem) != mp.end()) {
        tot++;
        break;
      }
    }
  }
  cout << tot << endl;
}
