A method of data encoding, the method comprising: receiving a set of information bits; performing a low density parity check, LDPC, encoding operation on the set of information bits to produce a codeword of a matched lifted LDPC code lifted using a commutative lifting group G, where the group G consists of Z elements g 0 , g 1 , ..., g Z-1 , the group multiplication rule is g i g j =g k , where the codeword lifted using the group G consists of n elements of the form ∑ i = 0 Z − 1 b i g i , , where (b 0 , b 1 , ..., b z-1 ) represents a binary vector so that the codeword is a binary vector of length Zn, wherein the matched lifted LDPC code is represented by a lifted parity check matrix H of dimension mxn comprising m parity columns and n-m information columns and a square submatrix M is formed by taking the m parity columns, and wherein: an order of the lifting group, Z, corresponds with a size of the lifting; wherein the encoding operation comprises inverting the determinant of the square submatrix M, the determinant of the square submatrix M being a polynomial of the form: g a + (g 0 +g L )P, wherein: the inverting is based on using the relation that the inverse of g a + (g 0 +g L )P is equal to g a -2 k · (g a 2 k-1 +(g 0 2 k-1 + g L 2 k-1 ) · P) · (g a 2 k-2 + (g 0 2 k-2 + g L 2 k-2 ·P) ·...· (g a +(g 0 +g L ) · P), g 0 is the identity element of the lifting group G, g 0 = g L 2 k , k is a positive integer, a is arbitrary, and P is an arbitrary non-zero element of a binary group ring associated to the lifting group. receiving a set of information bits; performing a low density parity check, LDPC, encoding operation on the set of information bits to produce a codeword of a matched lifted LDPC code lifted using a commutative lifting group G, where the group G consists of Z elements g 0 , g 1 , ..., g Z-1 , the group multiplication rule is g i g j =g k , where the codeword lifted using the group G consists of n elements of the form ∑ i = 0 Z − 1 b i g i , , where (b 0 , b 1 , ..., b z-1 ) represents a binary vector so that the codeword is a binary vector of length Zn, wherein the matched lifted LDPC code is represented by a lifted parity check matrix H of dimension mxn comprising m parity columns and n-m information columns and a square submatrix M is formed by taking the m parity columns, and wherein: an order of the lifting group, Z, corresponds with a size of the lifting; wherein the encoding operation comprises inverting the determinant of the square submatrix M, the determinant of the square submatrix M being a polynomial of the form: g a + (g 0 +g L )P, wherein: the inverting is based on using the relation that the inverse of g a + (g 0 +g L )P is equal to g a -2 k · (g a 2 k-1 +(g 0 2 k-1 + g L 2 k-1 ) · P) · (g a 2 k-2 + (g 0 2 k-2 + g L 2 k-2 ·P) ·...· (g a +(g 0 +g L ) · P), g 0 is the identity element of the lifting group G, g 0 = g L 2 k , k is a positive integer, a is arbitrary, and P is an arbitrary non-zero element of a binary group ring associated to the lifting group. an order of the lifting group, Z, corresponds with a size of the lifting; wherein the encoding operation comprises inverting the determinant of the square submatrix M, the determinant of the square submatrix M being a polynomial of the form: g a + (g 0 +g L )P, wherein: the inverting is based on using the relation that the inverse of g a + (g 0 +g L )P is equal to g a -2 k · (g a 2 k-1 +(g 0 2 k-1 + g L 2 k-1 ) · P) · (g a 2 k-2 + (g 0 2 k-2 + g L 2 k-2 ·P) ·...· (g a +(g 0 +g L ) · P), g 0 is the identity element of the lifting group G, g 0 = g L 2 k , k is a positive integer, a is arbitrary, and P is an arbitrary non-zero element of a binary group ring associated to the lifting group. k is a positive integer, a is arbitrary, and P is an arbitrary non-zero element of a binary group ring associated to the lifting group. <EOS>