#include <iostream>
#include <string>
#include <vector>
#include <cmath>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <cstdio>
#include <functional>
#include <set>
#include <sstream>
#include <map>
#include <queue>
#include <stack>
 
using namespace std;
 
int main()
{
	long long n;
	int m;
	while(cin>>n>>m,n){
		vector<int> c(m),x(n);
		for(int i=0;i<m;i++) cin>>c[i];
		for(long long i=0;i<n;i++) cin>>x[i];

		vector<vector<long long> > dp(n+1,vector<long long>(256,100000000LL));

		dp[0][128]=0;

		for(long i=0;i<n;i++){
			for(int j=0;j<256;j++){
				for(int k=0;k<m;k++){
					int tmp=j+c[k];
					tmp=min(tmp,255);
					tmp=max(tmp,0);
					dp[i+1][tmp]=min(dp[i+1][tmp],dp[i][j]+(tmp-x[i])*(tmp-x[i]));
				}
			}
		}

		long long res=dp[n][0];
		for(int i=1;i<256;i++) res=min(res,dp[n][i]);
		cout<<res<<endl;

	}

	return 0;
}