The process of correcting errors and obtaining back the message is called decoding. In this sequence, we will focus on this process, the decoding. We would like that the decoder of the received vector, which is the encoding of the original message plus a certain vector, is again the original message, for every message and every reasonable noisy pattern. The basis of decoding is the following principle, called Minimum Distance Decoding. Given a received vector, we look for a codeword that minimizes the Hamming distance with the received vector One of the most obvious decoding algorithms is Brute Force. What do we have to do? First of all, enumerate all codewords until we find one at distance t or less from the received vector. And we return such codeword. The complexity of this Brute Force is n*q^k since we have to compare the