#include<bits/stdc++.h>
using namespace std;
void solve(int n,int m){
    int c[m];
    for(int i=0;i<m;i++)scanf("%d",&c[i]);
    vector<long long> dp(256,1e18);
    dp[128]=0;
    for(int i=0;i<n;i++){
        int x;scanf("%d",&x);
        vector<long long> ndp(256,1e18);
        for(int j=0;j<256;j++){
            if(dp[j]==1e18)continue;
            for(int k=0;k<m;k++){
                int p=min(255,max(0,j+c[k]));
                ndp[p]=min(ndp[p],dp[j]+(x-p)*(x-p));
            }
        }
        dp=ndp;
    }
    long long ans=1e18;
    for(int i=0;i<256;i++){
        ans=min(ans,dp[i]);
    }
    printf("%lld\n",ans);
}
int main(){
    while(true){
        int n,m;scanf("%d%d",&n,&m);
        if(n==0 and m==0)break;
        solve(n,m);
    }
    return 0;
}
