#include <algorithm>
#include <iostream>
#define N 20000
#define M 256
#define INF (1e9)
using namespace std;
int n,m,c[N],x[N],y,d[N][M],ans;

int main(){
  
  while(1){
    cin>>n>>m;
    if(!n&&!m) break;
    for(int i=0;i<m;i++) cin>>c[i];
    for(int i=0;i<n;i++) cin>>x[i];
    for(int i=0;i<n;i++)
      for(int j=0;j<M;j++) d[i][j]=INF;
    y=128;
    for(int i=0;i<m;i++){
      int next=y+c[i];
      if(next>255) next=255;
      if(next<0) next=0;
      d[0][next]=(x[0]-(next))*(x[0]-(next));
    }
    for(int i=0;i<n-1;i++){
      for(int j=0;j<M;j++){
	if(d[i][j]==INF) continue;
	for(int k=0;k<m;k++){
	  int next=j+c[k];
	  if(next>255) next=255;
	  if(next<0) next=0;
	  d[i+1][next]=min(d[i+1][next],d[i][j]+(x[i+1]-(next))*(x[i+1]-(next)));
	}
      }
    }
    ans=INF;
    for(int i=0;i<M;i++) ans=min(ans,d[n-1][i]);
    cout<<ans<<endl;
  }
  return 0;
}