"""Get all pairs of names that have a charge difference of 1.

Assumes that the names are in the format "name_charge_spin", where `charge` is an integer
representing the charge and `spin` is an integer representing the spin. The function extracts
the charge from each name and checks if the absolute difference between the charges is exactly 1.

Args:
    names (List[str]): A list of strings where each string follows the format "name_charge_spin".

Returns:
    List[Tuple[str, str]]: A list of tuples, where each tuple contains a pair of names whose
    charges differ by exactly 1.
"""
You should write code starting with:
import itertools
from typing import List, Tuple

def get_one_prot_diff_name_pairs(names: List[str]) -> List[Tuple[str, str]]:
    # TODO: Implement this function
    pass

