string length m = 7
substring[0,1]="b"
last letter is different
invalid
substring[0,2]="ba"
dp[1][1] is true
s[0] != t[0]
dp[1][1] is true
dp[2][2] is true
dp[2][0] is false
dp[2][2] is true
dp[3][1] is true
s[1] != t[1]
s[0] != t[0]
dp[3][1] is true
dp[4][2] is true
s[0] != t[0]
dp[4][1] is false
dp[4][2] is true
dp[5][2] is true
dp[5][0] is false
dp[5][2] is true
dp[6][1] is true
s[1] != t[1]
s[0] != t[0]
dp[6][1] is true
dp[7][2] is true
valid
substring[0,3]="bab"
last letter is different
invalid
substring[0,4]="baba"
dp[1][1] is true
s[0] != t[0]
dp[1][1] is true
dp[2][2] is true
s[2] != t[2]
dp[1][3] is false
dp[1][4] is false
(v != 0) is false
dp[1][3] is false
dp[2][0] is false
dp[2][4] is false
dp[2][2] is true
dp[3][1] is true
s[1] != t[1]
dp[2][2] is true
dp[3][3] is true
s[3] != t[3]
s[0] != t[0]
dp[3][1] is true
dp[4][2] is true
s[2] != t[2]
dp[3][3] is true
dp[4][4] is true
s[0] != t[0]
dp[4][1] is false
dp[4][4] is true
dp[5][2] is true
s[2] != t[2]
dp[4][3] is false
dp[4][4] is true
dp[5][4] is true
dp[5][0] is false
dp[5][4] is true
dp[6][1] is true
s[1] != t[1]
dp[5][2] is true
dp[6][3] is true
s[3] != t[3]
s[0] != t[0]
dp[6][1] is true
dp[7][2] is true
s[2] != t[2]
dp[6][3] is true
dp[7][4] is true
valid
substring[0,5]="babaa"
dp[1][1] is true
s[0] != t[0]
dp[1][1] is true
dp[2][2] is true
s[2] != t[2]
dp[1][3] is false
dp[1][5] is false
(v != 0) is false
dp[1][3] is false
dp[1][4] is false
dp[1][5] is false
(v != 0) is false
dp[1][4] is false
dp[2][0] is false
dp[2][5] is false
dp[2][2] is true
dp[3][1] is true
s[1] != t[1]
dp[2][2] is true
dp[3][3] is true
s[3] != t[3]
s[4] != t[4]
s[0] != t[0]
dp[3][1] is true
dp[4][2] is true
s[2] != t[2]
dp[3][3] is true
dp[4][4] is true
dp[3][4] is false
dp[3][5] is false
(v != 0) is false
dp[3][4] is false
s[0] != t[0]
dp[4][1] is false
dp[4][5] is false
(v != 0) is false
dp[4][1] is false
s[2] != t[2]
dp[4][3] is false
dp[4][5] is false
(v != 0) is false
dp[4][3] is false
dp[4][4] is true
dp[5][5] is true
dp[5][0] is false
dp[5][5] is true
dp[6][1] is true
s[1] != t[1]
dp[5][2] is false
dp[5][5] is true
dp[6][3] is true
s[3] != t[3]
s[4] != t[4]
s[0] != t[0]
dp[6][1] is true
dp[7][2] is true
s[2] != t[2]
dp[6][3] is true
dp[7][4] is true
dp[6][4] is false
dp[6][5] is false
(v != 0) is false
dp[6][4] is false
invalid
substring[0,6]="babaab"
last letter is different
invalid
substring[0,7]="babaaba"
dp[1][1] is true
s[0] != t[0]
dp[1][1] is true
dp[2][2] is true
s[2] != t[2]
dp[1][3] is false
dp[1][7] is false
(v != 0) is false
dp[1][3] is false
dp[1][4] is false
dp[1][7] is false
(v != 0) is false
dp[1][4] is false
s[5] != t[5]
dp[1][6] is false
dp[1][7] is false
(v != 0) is false
dp[1][6] is false
dp[2][0] is false
dp[2][7] is false
dp[2][2] is true
dp[3][1] is true
s[1] != t[1]
dp[2][2] is true
dp[3][3] is true
s[3] != t[3]
s[4] != t[4]
dp[2][5] is false
dp[2][7] is false
(v != 0) is false
dp[2][5] is false
s[6] != t[6]
s[0] != t[0]
dp[3][1] is true
dp[4][2] is true
s[2] != t[2]
dp[3][3] is true
dp[4][4] is true
dp[3][4] is false
dp[3][7] is false
(v != 0) is false
dp[3][4] is false
s[5] != t[5]
dp[3][6] is false
dp[3][7] is false
(v != 0) is false
dp[3][6] is false
s[0] != t[0]
dp[4][1] is false
dp[4][7] is false
(v != 0) is false
dp[4][1] is false
s[2] != t[2]
dp[4][3] is false
dp[4][7] is false
(v != 0) is false
dp[4][3] is false
dp[4][4] is true
dp[5][5] is true
s[5] != t[5]
dp[4][6] is false
dp[4][7] is false
(v != 0) is false
dp[4][6] is false
dp[5][0] is false
dp[5][7] is false
dp[5][5] is true
dp[6][1] is true
s[1] != t[1]
dp[5][2] is false
dp[5][7] is false
(v != 0) is false
dp[5][2] is false
s[3] != t[3]
s[4] != t[4]
dp[5][5] is true
dp[6][6] is true
s[6] != t[6]
s[0] != t[0]
dp[6][1] is true
dp[7][2] is true
s[2] != t[2]
dp[6][3] is false
dp[6][7] is false
(v != 0) is false
dp[6][3] is false
dp[6][4] is false
dp[6][7] is false
(v != 0) is false
dp[6][4] is false
s[5] != t[5]
dp[6][6] is true
dp[7][7] is true
valid
substring[1,1]="a"
first letter is different
invalid
substring[1,2]="ab"
first letter is different
invalid
substring[1,3]="aba"
first letter is different
invalid
substring[1,4]="abaa"
first letter is different
invalid
substring[1,5]="abaab"
first letter is different
invalid
substring[1,6]="abaaba"
first letter is different
invalid
substring[2,1]="b"
already checked
substring[2,2]="ba"
already checked
substring[2,3]="baa"
dp[1][1] is true
s[0] != t[0]
dp[1][1] is true
dp[2][2] is true
dp[1][2] is false
dp[1][3] is false
(v != 0) is false
dp[1][2] is false
dp[2][0] is false
dp[2][3] is false
dp[2][2] is true
dp[3][1] is true
s[1] != t[1]
s[2] != t[2]
s[0] != t[0]
dp[3][1] is true
dp[4][2] is true
dp[3][2] is false
dp[3][3] is false
(v != 0) is false
dp[3][2] is false
s[0] != t[0]
dp[4][1] is false
dp[4][3] is false
(v != 0) is false
dp[4][1] is false
dp[4][2] is true
dp[5][3] is true
dp[5][0] is false
dp[5][3] is true
dp[6][1] is true
s[1] != t[1]
s[2] != t[2]
s[0] != t[0]
dp[6][1] is true
dp[7][2] is true
dp[6][2] is false
dp[6][3] is false
(v != 0) is false
dp[6][2] is false
invalid
substring[2,4]="baab"
last letter is different
invalid
substring[2,5]="baaba"
dp[1][1] is true
s[0] != t[0]
dp[1][1] is true
dp[2][2] is true
dp[1][2] is false
dp[1][5] is false
(v != 0) is false
dp[1][2] is false
s[3] != t[3]
dp[1][4] is false
dp[1][5] is false
(v != 0) is false
dp[1][4] is false
dp[2][0] is false
dp[2][5] is false
dp[2][2] is true
dp[3][1] is true
s[1] != t[1]
s[2] != t[2]
dp[2][3] is false
dp[2][5] is false
(v != 0) is false
dp[2][3] is false
s[4] != t[4]
s[0] != t[0]
dp[3][1] is true
dp[4][2] is true
dp[3][2] is false
dp[3][5] is false
(v != 0) is false
dp[3][2] is false
s[3] != t[3]
dp[3][4] is false
dp[3][5] is false
(v != 0) is false
dp[3][4] is false
s[0] != t[0]
dp[4][1] is false
dp[4][5] is false
(v != 0) is false
dp[4][1] is false
dp[4][2] is true
dp[5][3] is true
s[3] != t[3]
dp[4][4] is false
dp[4][5] is false
(v != 0) is false
dp[4][4] is false
dp[5][0] is false
dp[5][5] is false
dp[5][3] is true
dp[6][1] is true
s[1] != t[1]
s[2] != t[2]
dp[5][3] is true
dp[6][4] is true
s[4] != t[4]
s[0] != t[0]
dp[6][1] is true
dp[7][2] is true
dp[6][2] is false
dp[6][5] is false
(v != 0) is false
dp[6][2] is false
s[3] != t[3]
dp[6][4] is true
dp[7][5] is true
valid
substring[3,1]="a"
already checked
substring[3,2]="aa"
first letter is different
invalid
substring[3,3]="aab"
first letter is different
invalid
substring[3,4]="aaba"
first letter is different
invalid
substring[4,1]="a"
already checked
substring[4,2]="ab"
already checked
substring[4,3]="aba"
already checked
substring[5,1]="b"
already checked
substring[5,2]="ba"
already checked
substring[6,1]="a"
already checked
solution:
ba
baaba
baba
babaaba