/* Look at me! Look at me! Look at how large the monster inside me has become! */ #include #include #include #include #include #define FIT(a,b) for(vector::iterator a=b.begin();a!=b.end();a++) #define FITP(a,b) for(vector >::iterator a=b.begin();a!=b.end();a++) #define RIT(a,b) for(vector::reverse_iterator a=b.end();a!=b.begin();++a) #include #define ROF(a,b,c) for(int a=b;a>=c;--a) #include #include #define FOR(a,b,c) for(int a=b;a<=c;++a) #define REP(a,b) for(register int a=0;a #include #include #include #include #include #define f cin #define g cout #include #define debug cerr<<"OK"; #define pii pair #define mp make_pair #define pb push_back #define fi first #define se second #define ll long long #define ull unsigned long long #define mod 1000000009LL #define SQR 350 #define inf 1<<30 #define div fdasfasd #define hash dsafdsfds #define od 666013 #define mod 1000000007 #define DIM 600100 #define N 2010 using namespace std; /* int dx[]={0,0,0,1,-1}; int dy[]={0,1,-1,0,0}; */ int sol,cs,K,sir[30],t,viz[30],v[30],fac[30],fr[30]; char s[30]; void back(int k) { if(k>8) { int p=0; FOR(i,1,7) { ++p; while(p<=8&&sir[i]!=v[p]) ++p; } if(p<=8) sol++; return ; } FOR(i,0,9) { v[k]=i; fr[i]--; if(fr[i]<-1) { fr[i]++; continue; } if(fr[i]<0) K++; if(K>1) { K--; fr[i]++; continue; } back(k+1); if(fr[i]<0) K--; fr[i]++; } } int main () { #ifndef ONLINE_JUDGE freopen("a.in","r",stdin); freopen("a.out","w",stdout); #endif f>>(s+1); FOR(i,3,9) { sir[++t]=s[i]-'0'; fr[sir[t]]++; } back(1); g<