def cmp_name(first_node, second_node):
    """
    Compare two name recursively.

    :param first_node: First node

    :param second_node: Second state

    :return: 0 if same name, 1 if names are differents.
    """
    if len(first_node.children) == len(second_node.children):
        for first_child, second_child in zip(first_node.children,
                                             second_node.children):
            for key in first_child.__dict__.keys():
                if key.startswith('_'):
                    continue
                if first_child.__dict__[key] != second_child.__dict__[key]:
                    return 1
            ret_val = cmp_name(first_child, second_child)
            if ret_val != 0:
                return 1
    else:
        return 1
    return 0