class Solution:
    def isValidSudoku(self, board) -> bool:
        occu=[0]*10
        # row
        for i in range(9):
            occu = [0]*10
            for j in range(9):
                if(board[i][j]!="."):
                    occu[int(board[i][j])]+=1
            for j in occu:
                if j>1:
                    return False
        #column
        for i in range(9):
            occu = [0]*10
            for j in range(9):
                if(board[j][i]!="."):
                    occu[int(board[j][i])]+=1
            for j in occu:
                if j>1:
                    return False
        # 3x3 block
        for i in range(3):
            for j in range(3):
                occu = [0]*10
                for k in range(3):
                    for l in range(3):
                        if(board[i*3+k][j*3+l]!="."):
                            occu[int(board[i*3+k][j*3+l])]+=1
                occu=occu
                for k in occu:
                    if j>1:
                        return False
        return True
    
tc = [["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","9","8",".",".",".",".","6","."],["8",".",".",".","6",".",".",".","3"],["4",".",".","8",".","3",".",".","1"],["7",".",".",".","2",".",".",".","6"],[".","6",".",".",".",".","2","8","."],[".",".",".","4","1","9",".",".","5"],[".",".",".",".","8",".",".","7","9"]]
s= Solution()
print(s.isValidSudoku(tc))