def realign_words(word_tokens, sub_words_mapped, SPECIAL_PIECE):
    """Add special tokens to make word_tokens in alignment with extra SPECIAL PIECE in sub_words_mapped

    Args:
        word_tokens : List of words
        sub_words_mapped : List of list of sub words
    Returns:
        orig_to_new_index: old to new index
        aligned_words: List of words after adding SPECIAL PIECE if possible
    """
    # this loop is used to accout for extra SPECIAL_PIECE
    # if any
    special_counter = 0
    aligned_words = []
    orig_to_new_index = []
    for index, _sub_word in enumerate(sub_words_mapped):
        # this is some extra SPECIAL PIECE character
        # add it to original word
        if len(_sub_word) == 1 and _sub_word[0] == SPECIAL_PIECE:
            special_counter += 1
            aligned_words.append(_sub_word[0])
        else:
            pos = index - special_counter
            aligned_words.append(word_tokens[pos])
            orig_to_new_index.append(index)  # whenever original words comes, we need old-new mapping
    return orig_to_new_index, aligned_words