Given a -ary alphabet, a length , and a desired minimal distance , design an -code for which its total number of codewords is as large as possible, denoted by .