You are given a 0-indexed array of integers nums of length n. You are initially positioned at nums[0

class Solution {
public:
bool sol(vector& nums, int index, int ans, int& mini, vector<vector>& dp, int steps) {
if (index >= nums.size()) {
return false;
}
if (index == nums.size() - 1) {
mini = min(mini, ans);
return true;
}
if (nums[index] == 0) {
return false;
}
if (dp[index][steps] != -1) {
return dp[index][steps];
}
for (int i = nums[index]; i > 0; i–) {
bool out = sol(nums, index + i, ans + 1, mini, dp, i);
if (out == true) {
return true;
}
dp[index][i] = out;
}
return false;
}

int jump(vector<int>& nums) {
    int mini = INT_MAX;
    int maxSteps = *max_element(nums.begin(), nums.end()) + 1;
    vector<vector<int>> dp(nums.size(), vector<int>(maxSteps, -1));
    bool ans = sol(nums, 0, 0, mini, dp, 0);
    return ans ? mini : -1; // Return -1 if no solution found
}

};
can anyone explain where this code is wrong