#include<iostream>
using namespace std;
int sq(int n){return n*n;}
int main(){
  int n,m;
  int i,j,k;
  cin >> n >> m;
  while(n!=0){
    int inf = 1 << 30;
    int c[16]={},x[20001]={};
    for(i=0;i<m;i++) cin >> c[i];
    for(i=0;i<n;i++) cin >> x[i];
    
    int dp[256]={};
    int pre[256]={};
    fill(dp,dp+256,inf);
    fill(pre,pre+256,inf);
    
    int p;
    for(i=0;i<m;i++){
      p= 128+c[i];   
      if(p<0) p=0;
      if(p>255) p=255;
      dp[p]=sq(x[0]-p);
    }
    
    for(i=1;i<n;i++){
      for(j=0;j<256;j++) pre[j]=dp[j];
      fill(dp,dp+256,inf);
      for(j=0;j<256;j++){
	for(k=0;k<m;k++){
	  p=j+c[k];
	  if(p<0) p=0;
	  if(p>255) p=255;
	  dp[p]=min(dp[p],pre[j]+sq(x[i]-p));
	}
      }
    }
    
    int o=inf;
    for(i=0;i<256;i++) o=min(o,dp[i]);
    cout << o << endl;
    
    cin >> n >> m;
  }
  return 0;
}