Can you help me in to flat this without recursion i.e simple loops? def fun(i, j, inp, dp): if i >=j : return True # means we are cheking upper matrix. if dp[i][j] != -1: return dp[i][j] # means already processed. if inp[i] != inp[j]: # means not matching ending chars dp[i][j] = False break dp[i][j] = fun(i+1, j-1, inp, dp) return dp[i][j] .