def METHOD_NAME(
    self, first_snapshot_id: str, second_snapshot_id: str
) -> Tuple[Dict[str, Tuple[str, Optional[str]]], EBSSnapshot]:
    """
    The following parameters are not yet implemented: NextToken, MaxResults, StartingBlockIndex
    """
    snapshot1 = self.snapshots[first_snapshot_id]
    snapshot2 = self.snapshots[second_snapshot_id]
    changed_blocks: Dict[
        str, Tuple[str, Optional[str]]
    ] = dict()  # {idx: (token1, token2), ..}
    for idx in snapshot1.blocks:
        block1 = snapshot1.blocks[idx]
        if idx in snapshot2.blocks:
            block2 = snapshot2.blocks[idx]
            if block1.block_data != block2.block_data:
                changed_blocks[idx] = (block1.block_token, block2.block_token)
        else:
            changed_blocks[idx] = (block1.block_token, None)
    return changed_blocks, snapshot1