So, just to see if I understand the task... given those four (truncated?) lines of input data, would the following be the "right" answer?
LCS for 0 :: 1 = |ATGGAGAACATCACATCA|
LCS for 0 :: 2 = |TCACATCAGGACTCCTAGGACC|
LCS for 0 :: 3 = |CATCAC|
LCS for 1 :: 2 = |ACTCCTAGGACC|
LCS for 1 :: 3 = |CATCAC|
LCS for 2 :: 3 = |CAGGA|
This doesn't keep track of the actual index offsets where the longest match actually starts in each string for each pairwise comparison, but that would be easy to add.
That's the output from the code posted in my later reply in this thread, given those four lines of sample data as input.