Program Digital;
Type
 Arr = Array[0..9]Of Array[1..7]Of Boolean;
Var
 a, b: Arr;
 c: Array[0..9]Of Integer;
 f: Array[0..9]Of Boolean;
 i, j, x, count: Integer;
Function check(i, j: Integer): Boolean;
Var
 mode, k: Integer;
Begin
 mode := 2;
 check := False;
 For k:=1 To 7 Do Begin
 If i = 0 Then Begin
 check := True;
 Exit;
 End;
 If b[i-1][k] <> a[j][k] Then
 If b[i-1][k] Then Begin
 If mode = 2 Then mode := 0
 Else If mode = 1 Then Exit;
 End Else Begin
 If mode = 2 Then mode := 1
 Else If mode = 0 Then Exit;
 End;
 End;
 check := True;
End;
Procedure Print;
Var
 i: Integer;
Begin
 For i:=0 To 9 Do Write(c[i]:2);
 WriteLn;
 Inc(count);
End;
Procedure Try(i: Integer);
Var
 j: Integer;
Begin
 For j:=0 To 9 Do
 If f[j] And check(i, j) Then Begin
 f[j] := False;
 b[i] := a[j];
 c[i] := j;
 If i = 9 Then Print
 Else Try(i+1);
 f[j] := True;
 End;
End;
Begin
 Assign(Input, 'data.dat');
 ReSet(Input);
 For i:=0 To 9 Do Begin
 For j:=1 To 7 Do Begin
 Read(x);
 If x = 1 Then a[i, j] := True Else a[i, j] := False;
 End;
 ReadLn;
 End;
 Close(Input);
 Assign(Input, '');
 ReSet(Input);
 count := 0;
 FillChar(f, SizeOf(f), True);
 Try(0);
 WriteLn(count);
 ReadLn;
End.