def get_block_number(row_index: int, column_index: int, k: int) -> int:
    """Retrieve the block number corresponding to the given row and column indices for a k-by-k block Sudoku puzzle
       For example, block 0 in a k=3 Sudoku puzzle contains the indices (0,0), (0,1), (0,2), (1,0) ... (2,2)

    :param row_index: Row index
    :type row_index: int
    :param column_index: Column index
    :type column_index: int
    :param k: Size of the Sudoku puzzle (a grid of k x k blocks)
    :type k: int
    :return: Corresponding block number (between 0 and k**2-1)
    :rtype: int
    """
    block_row = row_index // k
    block_column = column_index // k
    return (block_row * k) + block_column