#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];
		vector<vector<int> > dp(N+1, vector<int>(256, INF));
		dp[0][128]=0;
		int x;
		for(int i=0; i<N; ++i){
			cin >> x;
			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-next)*(x-next)));
			}
		}
		int ans=INF;
		for(int i=0; i<=255; ++i)	ans=min(ans, dp[N][i]);
		cout << ans << endl;
	}
}