Problem: Example

Input

0 3 1 7 5 9 8 6 4 2
7 0 9 2 1 5 4 8 6 3
4 2 0 6 8 7 1 3 5 9
1 7 5 0 9 8 3 4 2 6
6 1 2 3 0 4 5 9 7 8
3 6 7 4 2 0 9 5 8 1
5 8 6 9 7 2 0 1 3 4
8 9 4 5 3 6 2 0 1 7
9 4 3 8 6 1 7 2 0 5
2 5 8 1 4 3 6 7 9 0


Output

0

Solution (in CPP):

Solution:
#include <bits/stdc++.h>

using namespace std;

int ot[10][10];

int check4(int a, int b, int c, int d)
{
    int t1,t2,t3;
    t1=ot[0][a];
    t2=ot[t1][b];
    t3=ot[t2][c];
    return ot[t3][d];
}
int check5(int a, int b, int c ,int d ,int e)
{
    int t1,t2,t3,t4;
    t1=ot[0][a];
    t2=ot[t1][b];
    t3=ot[t2][c];
    t4=ot[t3][d];
    return ot[t4][e];
}

int check(int a, int b, int c ,int d , int e)
{
    for(int i=0;i<10;i++)
    {
        if(i==a) continue;
        if(check5(i,b,c,d,e)==0)
            return -1;
    }
    for(int i=0;i<10;i++)
    {
        if(i==b) continue;
        if(check5(a,i,c,d,e)==0)
            return -1;
    }
    for(int i=0;i<10;i++)
    {
        if(i==c) continue;
        if(check5(a,b,i,d,e)==0)
            return -1;
    }
    for(int i=0;i<10;i++)
    {
        if(i==d) continue;
        if(check5(a,b,c,i,e)==0)
            return -1;
    }
    for(int i=0;i<10;i++)
    {
        if(i==e) continue;
        if(check5(a,b,c,d,i)==0)
            return -1;
    }
    if(check5(b,a,c,d,e)==0&&(a!=b)) return -1;
    if(check5(a,c,b,d,e)==0&&(b!=c)) return -1;
    if(check5(a,b,d,c,e)==0&&(c!=d)) return -1;
    if(check5(a,b,c,e,d)==0&&(d!=e)) return -1;
    return 1;
}

int main()
{
    int ctt=0;
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            cin >> ot[i][j];
        }
    }
    int a,b,c,d;
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
            for(int k=0;k<10;k++)
            {
                for(int L=0;L<10;L++)
                {
                    int e=check4(i,j,k,L);
                    if(check(i,j,k,L,e)==-1)
                        ctt++;
                }
            }
        }
    }
    cout << ctt << endl;

}