A block code is said to be non-singular if all codewords are distinct. The code is also non-singular, but although the codewords are distinct, there is a certain ambiguity between some symbol sequences of the code regarding the source symbol sequences. Huffman procedure is based on two assumptions regarding the optimum prefix codes: the most frequent symbols, those with higher probability, are represented by shorter codewords and the least frequent symbols are assigned codewords of same length. A Huffman code can be constructed along the following steps: the source symbols are arranged in decreasing probability, both symbols are combined to create a new source symbol, whose probability is the sum of the original ones, the Huffman procedure continues until the list has only two symbols, which receive the assignments 0 and 1 and finally, the binary codeword for each symbol is obtained by a reverse process.