//第一题 //当时一直没看懂题意,后来没时间了,反正就是水,受不了自己 #include<stdio.h> #include<string.h> #include<math.h> #include<iostream> #include<string> using namespace std; typedef long long ll; int n, res, vis[1000]; string s[100]; void dfs(int k, char c) { if(k == n) {res++; return ;} int ok = 0; for(int j=0; j<s[k].size(); j++) { if(!vis[s[k][j]]) { vis[s[k][j]] = 1; dfs(k+1,s[k][j]); vis[s[k][j]] = 0; ok = 1; } } if(ok == 0) return ; } int main() { while(cin >> n) { memset(vis, 0, sizeof(vis)); for(int i=0; i<n; i++) cin >> s[i]; res = 0; for(int j=0; j<s[0].size(); j++) { vis[s[0][j]] = 1; dfs(1,s[0][j]); vis[s[0][j]] = 0; } printf("%d\n", res); } return 0; }