1. A method for operating a non-volatile storage system, comprising: acquiring a first set of data to be programmed into a first set of memory cells within a first memory array; acquiring a second set of data to be programmed into a second set of memory cells within a second memory array; determining a first grouping of the first set of memory cells to be programmed from a first programming state to a second programming state; determining a second grouping of the second set of memory cells to be programmed from the second programming state to the first programming state; programming the first grouping of the first set of memory cells from the first programming state to the second programming state during a first programming cycle; and programming the second grouping of the second set of memory cells from the second programming state to the first programming state during the first programming cycle.