def min_jumps(arr):
n = len(arr)
dp = [float('inf')] * n
dp[n-1] = 0
for i in range(n-2, -1, -1):
max_jump = arr[i]
for j in range(i+1, min(n, i + max_jump + 1)):
if dp[j] != float('inf'):
dp[i] = min(dp[i], 1 + dp[j])
return dp[0] if dp[0] != float('inf') else -1
ZGVmIG1pbl9qdW1wcyhhcnIpOgogICAgbiA9IGxlbihhcnIpCiAgICBkcCA9IFtmbG9hdCgnaW5mJyldICogbgogICAgZHBbbi0xXSA9IDAKCiAgICBmb3IgaSBpbiByYW5nZShuLTIsIC0xLCAtMSk6CiAgICAgICAgbWF4X2p1bXAgPSBhcnJbaV0KICAgICAgICBmb3IgaiBpbiByYW5nZShpKzEsIG1pbihuLCBpICsgbWF4X2p1bXAgKyAxKSk6CiAgICAgICAgICAgIGlmIGRwW2pdICE9IGZsb2F0KCdpbmYnKToKICAgICAgICAgICAgICAgIGRwW2ldID0gbWluKGRwW2ldLCAxICsgZHBbal0pCgogICAgcmV0dXJuIGRwWzBdIGlmIGRwWzBdICE9IGZsb2F0KCdpbmYnKSBlbHNlIC0xCg==