psi k (a'1:a's) (c1@(a1:a2:as):cs)
  | length c1 == k     = (a'1:a2:a's) : psi k (a1:as) cs
  | length c1 == k + 1 = (a'1:a2:a's) : init (a1:as) : phi k (last as) cs
  | otherwise           = (a'1:a2:a's) : (a1:as) : cs
psi k (a'1:a's) (c1@(a1:a2:as):cs)
  | length c1 == k     = (a'1:a2:a's) : psi k (a1:as) cs
  | length c1 == k + 1 = (a'1:a2:a's) : init (a1:as) : phi k (last as) cs
  | otherwise           = (a'1:a2:a's) : (a1:as) : cs
psi k (a'1:a's) (c1@(a1:a2:as):cs)
  | length c1 == k     = (a'1:a2:a's) : psi k (a1:as) cs
  | length c1 == k + 1 = (a'1:a2:a's) : init (a1:as) : phi k (last as) cs
  | otherwise           = (a'1:a2:a's) : (a1:as) : cs