1. A method for programming a multi-level cell (MLC) memory, the MLC memory comprising a plurality of bits, each bit having a plurality of programmed states, each programmed state having a first pro(gram verify (PV) level, the method comprising: (a) programming the bits of the memory having a threshold voltage (Vt) level lower than the first PV level of the targeted programmed state such that at least one bit of them has a Vt level higher than a second PV level corresponding to a targeted programmed state, wherein the second PV level of the targeted programmed state is higher than the corresponding first PV level; and (b) programming only the bits of the memory with a Vt level lower than the first PV level of the targeted programmed state such that each of them has a Vt level higher than the first PV level of the targeted programmed state.