#include <bits/stdc++.h>
using namespace std;
namespace zxy{
const int N=1e5+5;
int n,a[N][7],k,tmp[7],f[7],g[7],C[15][15];
unsigned long long base[7]={100003,100019,100043,100049,100057,100069};
unsigned long long hah(int x,int u){return base[u]*(unsigned long long)(x);}
void dfs(int u){
for (int i=tmp[u]+1;i<=6;i++){
tmp[u+1]=i;dfs(u+1);
}
map<unsigned long long,int> mp;
for (int i=1;i<=n;i++){
unsigned long long sum=0;
for (int j=1;j<=u;j++){
sum+=hah(a[i][tmp[j]],u);
}
mp[sum]++;
}
for(auto &x:mp){
if (x.second>1){
f[u]+=x.second;
}
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
for (int j=1;j<=6;j++)
scanf("%d",&a[i][j]);
dfs(0);
C[0][0]=1;
for (int i=1;i<=14;i++){
C[i][0]=1;
for (int j=1;j<=i;j++) C[i][j]=C[i-1][j]+C[i-1][j-1];
}
for(int i=1;i<=6;i++){
for (int j=0;j<=i;j++){
if ((i-j)%2==1){
g[i]-=C[j][i]*f[j];
}
else{
g[i]+=C[i][j]*f[j];
}
}
}
printf("%d",g[k]);
return 0;
}
}
int main(){
zxy::main();
return 0;
}