#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <bitset>
#include <math.h>
#include <stack>
using namespace std;
typedef long long ll;

int dp[20020][256];

int main(){
	cin.tie(nullptr);
	ios::sync_with_stdio(false);
	while(1){
		int n,m; cin >> n >> m;
		if(n==0&&m==0)break;
		vector<int> c(m),x(n);
		for(int i=0;i<m;i++){
			cin >> c[i];
		}
		for(int i=0;i<n;i++){
			cin >> x[i];
		}
		for(int i=0;i<=n;i++){
			for(int j=0;j<256;j++){
				dp[i][j]=1e9;
			}
		}
		dp[0][128]=0;
		for(int i=0;i<n;i++){
			for(int j=0;j<256;j++){
				if(dp[i][j]==1e9)continue;
				for(int k=0;k<m;k++){
					int now=j+c[k];
					now=max(now,0);
					now=min(now,255);
					dp[i+1][now]=min(dp[i+1][now],dp[i][j]+(x[i]-now)*(x[i]-now));
				}
			}
		}
		cout << *min_element(dp[n],dp[n]+256) << endl;
	}
}
