#include <iostream>
#include <vector>
using namespace std;
int main(){
	int N,M;
	const int INF=(1<<28);
	while(cin >> N >> M, (N|M)){
		int c[M];
		for(int i=0; i<M; ++i)	cin >> c[i];
		int x[N];
		for(int i=0; i<N; ++i)	cin >> x[i];
		vector<vector<int> > dp(N+1, vector<int>(256, INF));
		dp[0][128]=0;
		for(int i=0; i<N; ++i)for(int j=0; j<=255; ++j)for(int k=0; k<M; ++k){
			int next=max(0,min(255, j+c[k]));
			dp[i+1][next]=min(dp[i+1][next], dp[i][j]+((x[i]-next)*(x[i]-next)));
		}
		int ans=INF;
		for(int i=0; i<=255; ++i)	ans=min(ans, dp[N][i]);
		cout << ans << endl;
	}
}