#include<stdio.h>
int MIN(int a,int b){return a<b?a:b;}
int d[20010][300];
int main(){
  int n,m,b[20],min,i,j,k,a,c;
  while(scanf("%d %d",&n,&m),n||m){
    for(i=0;i<n*300+300;i++)d[i/300][i%300]=1e8;
    for(i=0;i<m;i++)scanf("%d",&b[i]);
    d[0][128]=0;
    for(i=1;i<=n;i++){
      scanf("%d",&a);
      for(j=0;j<256;j++){
	for(k=0;k<m;k++){
	  c=MIN(255,j+b[k]);
	  if(c<0)c=0;	  
	  d[i][c]=MIN(d[i][c],d[i-1][j]+(c-a)*(c-a));
	}
      }
    }
    /*for(j=0;j<3;j++){
      for(i=120;i<140;i++)printf("%10d ",d[j][i]);
      printf("\n");
      }//*/
    min=1e8;
    for(i=0;i<256;i++)min=MIN(min,d[n][i]);
    printf("%d\n",min);
  }
  return 0;
}