The Little Elephant loves numbers. 

He has a positive integer x. The Little Elephant wants to find the number of positive integers d, such that d is the divisor of x, and x and d have at least one common (the same) digit in their decimal representations. 

Help the Little Elephant to find the described number.

Input

A single line contains a single integer x (1 ≤ x ≤ 109).

Output

In a single line print an integer — the answer to the problem.

Examples

Input

1


Output

1


Input

10


Output

2
import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;

/**
 * Created by peacefrog on 3/8/16.
 * 2:56 PM
 */
public class CF221B {
	final boolean ONLINE_JUDGE = System.getProperty("ONLINE_JUDGE") != null;
	PrintWriter out;
	long timeBegin, timeEnd;

	public void runIO() throws IOException {
		timeBegin = System.currentTimeMillis();

		InputStream inputStream;
		OutputStream outputStream;

		if (ONLINE_JUDGE) {
			inputStream = System.in;
			Reader.init(inputStream);
			outputStream = System.out;

			out = new PrintWriter(outputStream);
		} else {
			inputStream = new FileInputStream("/home/peacefrog/Dropbox/IdeaProjects/Problem Solving/input");
			Reader.init(inputStream);
			out = new PrintWriter(System.out);
		}
		solve();
		out.flush();
		out.close();
		timeEnd = System.currentTimeMillis();
		System.err.println("Time = " + (timeEnd - timeBegin));
	}

	/*
	 * Start Solution Here
	 */

	private void solve() throws IOException {
		int n = Reader.nextInt();
		int sq = (int) Math.sqrt(n);
		ArrayList<String> divisors = new ArrayList<>();
		for (int i = 1; i <= sq; i++) {
			if(n%i == 0){
				divisors.add(Integer.toString(i));
				int d2 = n/i;
				if (n % d2 == 0 && d2 != i){
					divisors.add(Integer.toString(d2));
				}
			}
		}

		String val = Integer.toString(n);

		int count = 0 ;
		for (String divisor : divisors) {
			boolean found = false;

			for (int j = 0; j < val.length(); j++) {
				for (int k = 0; k < divisor.length(); k++) {
					if (divisor.charAt(k) == val.charAt(j)) {
						found = true;
						break;
					}
				}
				if (found) break;
			}

			if (found) count++;
		}

		out.println(count);
	}

	public static void main(String[] args) throws IOException {
		new CF221B().runIO();
	}

	static class Reader {
		static BufferedReader reader;
		static StringTokenizer tokenizer;

		/**
		 * call this method to initialize reader for InputStream
		 */
		static void init(InputStream input) {
			reader = new BufferedReader(new InputStreamReader(input));
			tokenizer = new StringTokenizer("");
		}

		/**
		 * get next word
		 */
		static String next() {
			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
				try {
					tokenizer = new StringTokenizer(reader.readLine());
				} catch (IOException e) {
					throw new RuntimeException(e);
				}
			}
			return tokenizer.nextToken();
		}

		static String nextLine() {
			try {
				return reader.readLine();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return "";
		}

		static int nextChar() throws IOException {
			return reader.read();
		}

		static int nextInt() throws IOException {
			return Integer.parseInt(next());
		}

		static long nextLong() throws IOException {
			return Long.parseLong(next());
		}

		static double nextDouble() throws IOException {
			return Double.parseDouble(next());
		}

		static long[] nextLongArray(int n) throws IOException {
			long[] arr = new long[n];
			for (int i = 0; i < n; i++) {
				arr[i] = nextLong();
			}

			return arr;
		}

		static int[] nextIntArray(int n) throws IOException {
			int[] arr = new int[n];
			for (int i = 0; i < n; i++) {
				arr[i] = nextInt();
			}
			return arr;
		}
	}
}