def reaction_balance(metabolites):
    """ Check the balancing status of the stoichiometry

    Parameters
    ----------
    metabolites : dict - Dictionary of metabolites with stoichiometric coefficnets

    Returns
    -------
    charge_str : str or bool
    element_str : str or bool
    balanced : str or bool
    """
    element_result = check_element_balance(metabolites)
    charge_result = check_charge_balance(metabolites)

    if charge_result is None:
        charge_str = "Unknown"
    elif charge_result == 0:
        charge_str = "OK"
    else:
        charge_str = str(charge_result)

    if not all(x.formula for x in metabolites.keys()):
        element_str = "Unknown"
    elif element_result == {}:
        element_str = "OK"
    else:
        element_str = unbalanced_metabolites_to_string(element_result)

    if len(metabolites) < 2:
        balanced = None
    elif element_str == "OK" and charge_str == "OK":
        balanced = True
    elif element_str not in ("OK", "Unknown") or charge_str not in ("OK", "Unknown"):
        balanced = False
    else:
        balanced = "Unknown"

    return charge_str, element_str, balanced