#include<iostream>
#include<cstdio>
using namespace std;
char s[1005][1005];
int l[1005];
bool unhave[20],tmp[20];
int main() {
// freopen("code.in","r",stdin);
// freopen("code.out","w",stdout);
int n;
scanf("%d",&n);
for(int i=1; i<=n; i++) {
scanf("%d",&l[i]);
scanf("%s",s[i]+1);
}
int now=1,ans=0;
for(int i=0; i<=9; i++) {
for(int j=0; j<=9; j++) {
for(int k=0; k<=9; k++) {
for(int p=0; p<=9; p++) unhave[p]=0;
for(int t=1; t<=n; t++) {
now=1;
for(int p=0; p<=9; p++) tmp[p]=0;
for(int p=1; p<=l[t]; p++) {
if(now==1) {
if(i==s[t][p]-'0') now++;
}
if(now==2) {
if(j==s[t][p]-'0') now++;
}
if(now==3) {
if(k==s[t][p]-'0') now++;
}
if(now==4) tmp[s[t][p]-'0']=1;
}
if(now!=4) break;
for(int p=0; p<=9; p++)
if(tmp[p]==0) unhave[p]=1;
}
if(now<3) break;
if(now==3) continue;
for(int p=0; p<=9; p++) if(!unhave[p]) ans++;
}
if(now<2) break;
}
}
cout<<ans;
return 0;
}
i,j,k 为枚举前三位数,now 为当前匹配到的位置,吸氧后没 T,但wa了,答案统计少了,求助大佬。