#include<cstdio>
#include<algorithm>

using namespace std;

const long long inf=1LL<<60;
long long memo[256],memo2[256];

int main()
{
	for(int n,m;scanf("%d%d",&n,&m),n;){
		int c[16];
		static int x[20001];
		for(int i=0;i<m;i++)	scanf("%d",c+i);
		for(int i=0;i<n;i++)	scanf("%d",x+i);

		for(int j=0;j<256;j++)	memo[j]=memo2[j]=inf;

		memo[128]=0;
		for(int i=0;i<n;i++){
			for(int j=0;j<256;j++){
				if(memo[j]==inf)	continue;
				for(int k=0;k<m;k++){
					int next=min(255,max(0,j+c[k]));
					memo2[next]=min(memo2[next],memo[j]+(next-x[i])*(next-x[i]));
				}
			}
			for(int j=0;j<256;j++)	memo[j]=memo2[j],memo2[j]=inf;
		}

		long long emin=inf;
		for(int j=0;j<256;j++)	emin=min(emin,memo[j]);
		printf("%lld\n",emin);
	}

	return 0;
}