#include <bits/stdc++.h>
using namespace std;
int rnd(int n){
    return (n>255)?255:(n<0)?0:n;
}

int main(void){
    int n,m;
    while(cin>>n>>m,n){
        vector<vector<int>> dp(2,vector<int>(256,999999999));
        vector<int> c_data(m),x(n);
        for(int i=0;i<m;i++) cin>>c_data[i];
        for(int i=0;i<n;i++) cin>>x[i];
        dp[0][128]=0;
        for(int i=1;i<n+1;i++){
            dp[i%2]=vector<int>(256,999999999);
            for(int j=0;j<256;j++){
                if(dp[(i+1)%2][j]==999999999) continue;
                for(auto c:c_data){
                    dp[i%2][rnd(j+c)]=min(dp[i%2][rnd(j+c)],
                                        dp[(i+1)%2][j]+(rnd(j+c)-x[i-1])*(rnd(j+c)-x[i-1]));
                }
            }
        }
        cout<<*min_element(dp[n%2].begin(),dp[n%2].end())<<endl;
    }
}
