def METHOD_NAME(x, y, find_sel, find_sel_new, metric: str = "neg_mean_absolute_error"):
    if len(find_sel_new) == 1:
        comb_best = np.append(find_sel, find_sel_new)
        coeff_best = _get_coeff(x[:, comb_best], y)
        score_best = _eval(x[:, comb_best], y, coeff_best, metric)
        return comb_best, coeff_best, score_best
    combs = combinations(np.append(find_sel, find_sel_new), len(find_sel) + 1)
    coeff_best = _get_coeff(x[:, find_sel], y)
    score_best = _eval(x[:, find_sel], y, coeff_best, metric)
    comb_best = find_sel
    for ind_comb in combs:
        d = x[:, ind_comb]
        coeff = _get_coeff(d, y)
        score = _eval(d, y, coeff, metric)
        if score > score_best:
            score_best = score
            comb_best = ind_comb  # type: ignore
            coeff_best = coeff
    return comb_best, coeff_best, score_best