#include<bits/stdc++.h>
#define all(vec) vec.begin(),vec.end()
using namespace std;
typedef long long ll;
typedef pair<ll,ll> P;
const ll MOD=998244353;
const ll INF=1000000000;
const ll LINF=1000000000000000010;
int dx[8]={0,0,1,1,1,-1,-1,-1};
int dy[8]={1,-1,1,-1,0,1,-1,0};
int n,m;
int c[20],x[20010];
ll dp[20010][256];
ll dfs(int now,int pre){
    if(dp[now][pre]!=-1)return dp[now][pre];
    ll res=LINF;
    for(int i=0;i<m;i++){
        int to=min(255,max(0,pre+c[i]));
        ll s=(to-x[now])*(to-x[now]);
        if(now+1<n)s+=dfs(now+1,to);
        res=min(res,s);
    }
    return dp[now][pre]=res;
}
int main(){
    while(cin>>n>>m,n+m){
        for(int i=0;i<m;i++)cin>>c[i];
        for(int i=0;i<n;i++)cin>>x[i];
        memset(dp,-1,sizeof(dp));
        cout<<dfs(0,128)<<endl;
    }
}
