Let
be an error-correcting code consisting of
codewords in which each codeword
consists of
letters taken from an alphabet
of length
, and every two distinct codewords differ in at least
places. Then
is said to be nearly perfect if, for every possible word
of length
with letters in
, there is a codeword
in
in which at most
letters of
differ from the corresponding letters of
. The codeword
is unique if it differs from
in fewer than
places and there is at most one other codeword differing from
in
places if
differs from
in
places.
A nearly perfect code can be derived from a perfect
code
by adding a parity check digit to the end of each codeword in
, so if
is a
-perfect binary linear code, then
is a
-nearly perfect binary linear code. In this way,
the nearly perfect extended Golay code can be obtained from the perfect Golay code
and the nearly perfect extended Hamming codes from the perfect Hamming codes.