def __find_name_column(df, scientific_names):
    """Return a tuple of (name_column, overla_size)."""
    max_overlap, name_col_name = -1, None
    for col_name in df.columns:
        unique_col_vals = set(df[col_name])
        overlap_size = len(unique_col_vals & scientific_names)
        if overlap_size > max_overlap:
            max_overlap = overlap_size
            name_col_name = col_name
    return name_col_name, max_overlap
