from typing import List
from typing import Dict


def _evaluate_opposite_expression(
    path: List[str],
    drug_dict: Dict[str, int],
    disease_dict: Dict[str, int],
    errors_allowed: int = 0
) -> bool:
    """Evaluate opposite expression on a single path.

    :param path: path to evaluate
    :param drug_dict: path to evaluate
    :param disease_dict: dictionary with the fold changes from the drug experiment
    :param errors_allowed: errors allowed in the path
    :return: boolean with the result
    """
    current_errors = 0
    # Disease node at the end of the path has already been removed
    for node in path[1:]:

        if drug_dict[node] == disease_dict[node]:

            # max errors allowed reached
            if current_errors == errors_allowed:
                return False
            # allow for one more error
            current_errors += 1

    return True