#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

int main()
{
	for(int n,m;cin>>n>>m,n|m;){
		int cs[m],xs[n];
		for(int i=0;i<m;i++) cin>>cs[i];
		for(int i=0;i<n;i++) cin>>xs[i];
		
		static int dp[20001][256];
		memset(dp,0x7f,sizeof dp);
		dp[0][128]=0;
		for(int i=0;i<n;i++) for(int j=0;j<256;j++){
			if(dp[i][j]==0x7f7f7f7f) continue;
			for(int k=0;k<m;k++){
				int l=max(min(j+cs[k],255),0);
				dp[i+1][l]=min(dp[i+1][l],dp[i][j]+(l-xs[i])*(l-xs[i]));
			}
		}
		
		cout<<*min_element(dp[n],dp[n]+256)<<endl;
	}
	
	return 0;
}