#include <cstdio>
#include <algorithm>
#include <memory.h>

int n, hp, S[101][101], Dijk[101][101], Find[101][101], dx[4] = { -1, 0, 1, 0 }, dy[4] = {0,1,0,-1};

int main()
{
    freopen(".20.in","r",stdin);
    freopen(".20.out","w",stdout);
    scanf("%d%d",&n,&hp);
    for(int i = 0 ; i < n ; i++ ) for(int j = 0 ; j < n ; j++ )
        scanf("%d", &S[i][j]);
    memset(Dijk, 0x3f, sizeof(Dijk));
    Dijk[0][0] = S[0][0];
    while(!Find[n-1][n-1])
    {
        int m = 0x3f3f3f3f, mi, mj;
        for(int i = 0 ; i < n ; i++ ) for(int j = 0 ; j < n ; j++ )
            if( !Find[i][j] && m > Dijk[i][j] ) m = Dijk[i][j], mi = i, mj = j;
        Find[mi][mj] = 1;
        for(int i = 0 ; i < 4 ; i++ )
        {
            if( (0 <= mi+dx[i] && mi+dx[i] < n) && (0 <= mj+dy[i] && mj+dy[i] < n) )
            {
                if( !Find[mi+dx[i]][mj+dy[i]] && Dijk[mi+dx[i]][mj+dy[i]] > Dijk[mi][mj] + S[mi+dx[i]][mj+dy[i]] )
                    Dijk[mi+dx[i]][mj+dy[i]] = Dijk[mi][mj] + S[mi+dx[i]][mj+dy[i]];
            }
        }
    }
    if( Dijk[n-1][n-1] <= hp ) printf("%d", hp - Dijk[n-1][n-1]);
    else printf("-1");
}
