#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
#define INF (1<<29)
int cb[16];

int main(){
	int n,m;
	while(cin>>n>>m,n|m){
		for(int i=0;i<m;i++)cin>>cb[i];
		int dp[2*256];
		int *cur=dp,*next=dp+256;
		for(int i=0;i<256;i++)cur[i]=INF;
		cur[128]=0;
		for(int i=0;i<n;i++){
			int x;
			cin>>x;
			for(int j=0;j<256;j++)next[j]=INF;
			for(int j=0;j<256;j++){
				for(int k=0;k<m;k++){
					int a = j+cb[k];
					if(a<0)a=0;
					else if(255<a)a=255;
					next[a] = min(next[a],cur[j]+(a-x)*(a-x));
				}
			}
			swap(cur,next);
		}
		cout<<*min_element(cur,cur+256)<<endl;
	}
	return 0;
}