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
/*
 Author: sunits789
 Task: B136
 Lang: JAVA
 */
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;
import java.io.BufferedReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.math.BigInteger;
import java.io.InputStream;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.FileReader;


public class B136
{
	public static void main(String[] Args)
	{
		long t1=System.currentTimeMillis();
		// String inputStream = "file.in";
		// String outputStream = "file.out";
		InputStream inputStream = System.in;
		OutputStream outputStream = System.out;
		InputReader in = new InputReader(inputStream);
		PrintWriter out = new PrintWriter(outputStream);
		// PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(outputStream)));
		CodeB136 solver = new CodeB136();
		solver.solve(1, in, out);
		out.close();
		long t2=System.currentTimeMillis();
		//System.out.println(t2-t1+"ms");
	}
}

class CodeB136
{
	public void solve(int testNumber, InputReader in, PrintWriter out)
	{
		int n=in.nextInt();
		int count=0;
		for(int i=1;(i*i)<=n;i++)
		{
			if(n%i==0)
			{
				if(check(i,n))
				{
					count++;
				}
				if(check((n/i),n)&&((n/i)!=i))
				{
					count++;
				}
			}
		}
		out.println(count);
	}
	
	public boolean check(int a,int b)
	{
		boolean[] da=new boolean[10];
		boolean[] db=new boolean[10];
		Arrays.fill(da,false);
		Arrays.fill(db,false);
		while(a!=0)
		{
			int rem=a%10;
			da[rem]=true;
			a/=10;
		}
		while(b!=0)
		{
			int rem=b%10;
			db[rem]=true;
			b/=10;
		}
		for(int i=0;i<10;i++)
		{
			if(da[i]&&db[i])
			{
				return true;
			}
		}
		return false;
	}
	
	public void printArray(int arr[],PrintWriter out)
	{
		for(int i=0;i<arr.length;i++)
		{
			out.println(arr[i]);
		}
	}
	public void printArray(long arr[],PrintWriter out)
	{
		for(int i=0;i<arr.length;i++)
		{
			out.println(arr[i]);
		}
	}
	public void printArray(double arr[],PrintWriter out)
	{
		for(int i=0;i<arr.length;i++)
		{
			out.println(arr[i]);
		}
	}
	public void printArray(String arr[],PrintWriter out)
	{
		for(int i=0;i<arr.length;i++)
		{
			out.println(arr[i]);
		}
	}
}








class InputReader
{
	private BufferedReader reader;
	private StringTokenizer tokenizer;

	public InputReader(InputStream stream)
	{
		reader = new BufferedReader(new InputStreamReader(stream));
		tokenizer = null;
	}

	public InputReader(String iFile)throws IOException
	{
		reader = new BufferedReader(new FileReader(iFile));
		tokenizer = null;
	}

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

	public int nextInt()
	{
		return Integer.parseInt(next());
	}

	public long nextLong()
	{
		return Long.parseLong(next());
	}

	public double nextDouble()
	{
		return Double.parseDouble(next());
	}
	
	public void getArray(int arr[])
	{
		for(int i=0;i<arr.length;i++)
		{
			arr[i]=nextInt();
		}
	}
	
	public void getArray(double arr[])
	{
		for(int i=0;i<arr.length;i++)
		{
			arr[i]=nextDouble();
		}
	}
	
	public void getArray(String arr[])
	{
		for(int i=0;i<arr.length;i++)
		{
			arr[i]=next();
		}
	}
	
	public void getArray2D(String arr[][])
	{
		for(int i=0;i<arr.length;i++)
		{
			for(int j=0;j<arr[i].length;j++)
			{
				arr[i][j]=next();
			}
		}
	}
	
	public void getArray2D(int arr[][])
	{
		for(int i=0;i<arr.length;i++)
		{
			for(int j=0;j<arr[i].length;j++)
			{
				arr[i][j]=nextInt();
			}
		}
	}
	
	public void getArray2D(double arr[][])
	{
		for(int i=0;i<arr.length;i++)
		{
			for(int j=0;j<arr[i].length;j++)
			{
				arr[i][j]=nextDouble();
			}
		}
	}
}
