def choose_parsimonious_states(tree, ps_feature, out_feature):
    """
    Calculates the statistics for parsimony, and copies the parsimonious states to out_feature.

    :param ps_feature: feature containing each node parsimonious states
    :type ps_feature: str
    :param out_feature: feature where the node parsimonious states are to be copied
    :type out_feature: str
    :param tree: the tree of interest
    :type tree: ete3.Tree
    :return: number of ancestral scenarios selected, number of unresolved nodes, and total numbest of selected states
    :rtype: tuple(int, int, int)
    """
    num_scenarios = 1
    unresolved_nodes = 0
    num_states = 0
    for node in tree.traverse():
        states = getattr(node, ps_feature)
        node.add_feature(out_feature, states)
        n = len(states)
        num_scenarios *= n
        unresolved_nodes += 1 if n > 1 else 0
        num_states += n
    return num_scenarios, unresolved_nodes, num_states
