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;

#define int long long
typedef vector<int>vint;
typedef pair<int,int>pint;
typedef vector<pint>vpint;
#define rep(i,n) for(int i=0;i<(n);i++)
#define reps(i,f,n) for(int i=(f);i<(n);i++)
#define all(v) (v).begin(),(v).end()
#define each(it,v) for(__typeof((v).begin()) it=(v).begin();it!=(v).end();it++)
#define pb push_back
#define fi first
#define se second
template<typename A,typename B>inline void chmin(A &a,B b){if(a>b)a=b;}
template<typename A,typename B>inline void chmax(A &a,B b){if(a<b)a=b;}

int T[10][10];

bool check(vint v){
    int r=0;
    for(int i=0;i<5;i++)r=T[r][v[i]];
    return r==0;
}

signed main(){
    rep(i,10)rep(j,10)cin>>T[i][j];
    int cnt=0;
    rep(a,10)rep(b,10)rep(c,10)rep(d,10){
        int e=T[T[T[T[0][a]][b]][c]][d];
        vint v={a,b,c,d,e};

        bool ok=true;
        rep(i,5){
            reps(j,1,10){
                int tmp=v[i];
                v[i]=(v[i]+j)%10;
                if(check(v))ok=false;
                v[i]=tmp;
            }
        }
        rep(i,4){
            swap(v[i],v[i+1]);
            if(check(v)&&v[i]!=v[i+1])ok=false;
            swap(v[i],v[i+1]);
        }
        if(!ok)cnt++;
    }
    cout<<cnt<<endl;
}