#include<iostream> #include<algorithm> #include<cstring> using namespace std; int m,ans; bool x[10],y[10]; bool check(int a,int c) { long long b=m*(long long)c-a*c; if (!a || !b || !c) return false; memcpy(y,x, sizeof x); while(b) { int p=b%10; b/=10; if(y[p]||!p)return false; else y[p]=true; } for(int i=1;i<=9;i++) { if(!y[i]) { return false; } } return true; } void dfsc(int a,int u,int c) { if(u>9)return ; if(check(a,c))ans++; for(int i=1;i<=9;i++) { if(!x[i]){ x[i]=true; dfsc(a,u+1,c*10+i); x[i]=false; } } } void dfsa(int u,int a) { if(a>=m||u>9)return ; dfsc(a,u,0); for(int i=1;i<=9;i++) { if(!x[i]) { x[i]=true; dfsa(u+1,a*10+i); x[i]=false; } } } int main() { cin>>m; dfsa(0,0); cout<<ans; return 0; }