def generate_gbaoab_solvent_solute_string(K_p=2, K_r=1, slow_group=[0], fast_group=[1]):
    """Following appendix of g-baoab paper.

    Let's say we want to evaluate force group 0 once per timestep and force group 1 twice per timestep.

    Using the default arguments above should give us

        V0 (V1 R^K_r O R^K_r V1)^K_p V0
        V0 V1 R O R V1 V1 R O R V1 V0

    Notes:
    * will perform K_p velocity randomizations per timestep
    *

    """
    Rs = ["R"] * K_r
    fast_forces = ["V{}".format(i) for i in fast_group]
    slow_forces = ["V{}".format(i) for i in slow_group]

    inner_loop_string = fast_forces + Rs + ["O"] + Rs + fast_forces
    return " ".join(slow_forces + inner_loop_string * K_p + slow_forces)