For a codebook of \(k\)  bit-strings, there can be mostly \(2^k\)  different data strings. \(d_{min}\)  of this non-redundant codebook is only 1 (left part of Fig. REF ). To increase \(d_{min}\) , ECC encodes each \(k\)  bit-string into an \(n\)  bit-string (\(n > k\) ), with \(n-k\)  redundant bits. Generally, with larger \(n\) , it is easier to get larger \(d_{min}\)  and higher error correction capability. With \(n\) , \(k\)  fixed, \(d_{min}\)  is upper bounded by \(n-k+1\)  [1]}. Theoretically, such codebook can be generated with a brute force search in \(n\) -dimensional space. However, the search becomes prohibitively expensive even with relatively small \(n\)  and \(k\)  (e.g., \(\sim 10\) ) (we include one such example in the supplementary material). Fortunately, several families of high performance error correction codes (with large \(d_{min}\) ) have been designed [2]}, [3]}, [4]}. In the following section, we elaborate on adopting these codes to SL systems.
<FIGURE>