1. A method for generating a constrained codeword, the method comprising: receiving a dataword; encoding the dataword along an enumerative coding graph to generate an enumerative codeword, wherein the enumerative coding graph comprises a plurality states each associated with a cardinality; and precoding the enumerative codeword to generate the constrained codeword.