#include<stdio.h>
#include<string.h>
#include<math.h>
#define min(a,b) (a>b?b:a)
int N,M,C[20],x[20005],f,s;
long long res,dp[2][300];
int main()
{
	for(;scanf("%d%d",&N,&M),N+M;)
	{
		res=100000000000;
		memset(dp,0x7f,sizeof(dp));
		for(int i=0;i<M;i++)scanf("%d",&C[i]);
		for(int j=1;j<=N;j++)scanf("%d",&x[j]);
		f=0,s=1;
		dp[f][128]=0;
		for(int i=1;i<=N;i++)
		{
			memset(dp[s],0x7f,sizeof(long long[300]));
			for(int j=0;j<=255;j++)
				for(int k=0;k<M;k++)
				{
					int np=j+C[k],t;
					
					if(np>255)np=255;
					if(np<0)np=0;
					t=(x[i]-np);t*=t;
					dp[s][np]=min(dp[s][np],dp[f][j]+t);
				}
			f=!f;s=!f;
		}
		for(int i=0;i<=255;i++)res=min(res,dp[f][i]);
		printf("%lld\n",res);
	}
	return 0;
}