1. A method of programming a multi-level, electrically-programmable memory including memory cells electrically programmable into at least two distinct programmed states, the method comprising: defining at least two programming sequences, each programming sequence being designed for electrically programming memory cells into at least one respective programmed state; selecting a group of memory cells of the memory; receiving a pattern of data to be written into the selected group of memory cells of the memory; analysing the pattern for determining sub-groups of memory cells, each sub-group of memory cells including the memory cells in the selected group that are to be brought into at least one respective programmed state of the at least two distinct programmed states; and submitting the memory cells in each sub-group to the respective programming sequence.