#include<bits/stdc++.h>
using namespace std ;
const int maxn = 100 + 10 ;
int dp[maxn][maxn][maxn][maxn] ;
int main()
{
    std::ios::sync_with_stdio(false) , cin.tie(0) ;
    int n ;
    long long x ;
    cin >> n >> x ;
    vector<int> a(n + 1) ;
    for(int i = 1 ; i <= n ; i ++)  cin >> a[i] ;
    //dp[i][j][k][p]???ǰi???ѡ?j????ģp?k???ֵ
    for(int i = 0 ; i < maxn ; i ++)
        for(int j = 0 ; j < maxn ; j ++)
            for(int k = 0 ; k < maxn ; k ++)
                for(int p = 0 ; p < maxn ; p ++)
                    dp[i][j][k][p] = -1 ;
    for(int i = 1 ; i <= n ; i ++)  for(int p = 1 ; p <= 100 ; p ++)
    {

        dp[i][1][a[i] % p][p] = a[i] ;
        //cout << "!!! " << i << ' ' << 1 << ' ' << a[i] % p << ' ' << p << ' ' << a[i] << '\n' ;
    }
    for(int i = 1 ; i < n ; i ++)
        for(int j = 1 ; j < i + 1 ; j ++)
            for(int p = 1 ; p <= 100 ; p ++)
                for(int k = 0 ; k < p ; k ++)
                {
                    //cout << i << ' ' << j << ' ' << k << ' ' << p << ' ' << dp[i][j][k][p] << '\n' ;
                    if(dp[i][j][k][p] < 0)  continue ;
                    dp[i + 1][j][k][p] = max(dp[i + 1][j][k][p] , dp[i][j][k][p]) ;
                    dp[i + 1][j + 1][(k + a[i + 1]) % p][p] = max(dp[i + 1][j + 1][(k + a[i + 1]) % p][p] , 
                        dp[i][j][k][p] + a[i + 1]) ;
                    // if(i == 1 && j == 1 && k == 1 && p == 2)
                    // {
                    //     cout << i + 1 << ' ' << j + 1 << ' ' << (k + a[i + 1]) % p << ' ' << dp[i + 1][j + 1][(k + a[i + 1]) % p][p] << '\n' ;
                    // }
                }
    //cout << dp[2][2][1][2] << '\n' ;
    long long ans = x ;
    for(int i = 0 ; i < maxn ; i ++)
        for(int j = 0 ; j < maxn ; j ++)
            for(int k = 0 ; k < maxn ; k ++)
                {
                    if(dp[i][j][k][j] < 0)  continue ;
                    if((x - k) % j == 0)  ans = min(ans , (x - dp[i][j][k][j]) / j) ;
                }
    cout << ans << '\n' ;
    return 0 ;
}
#include<bits/stdc++.h>
using namespace std;
//dengyaotriangle!

const int maxn=100005;

int n,l;
int a[2][maxn];
int v[maxn],li[maxn],ri[maxn],lj[maxn],rj[maxn],t;

int main(){
    ios::sync_with_stdio(0);cin.tie(0);
    cin>>n>>l;
    for(int t=0;t<2;t++){
        for(int i=1;i<=n;i++)cin>>a[t][i],a[t][i]-=i;
        a[t][0]=0;a[t][n+1]=l-n;
    }
    for(int i=0;i<=n+1;i++){
        if(i==0||a[0][i]!=a[0][i-1]){
            ++t;v[t]=a[0][i];li[t]=ri[t]=i;
            lj[t]=-1;
        }else ri[t]=i;
    }
    int sp=0;
    for(int i=0;i<=n+1;i++){
        while(sp<=0||a[1][i]>v[sp])++sp;
        if(a[1][i]!=v[sp]){
            cout<< -1;
            return 0;
        }
        if(lj[sp]==-1)lj[sp]=i;
        rj[sp]=i;
    }
    long long ans=0;
    for(int i=1;i<=t;i++){
        if(lj[i]!=-1)ans+=max(li[i]-lj[i],0)+max(rj[i]-ri[i],0);
    }
    cout<<ans;
    return 0;
}