#include <algorithm>
#include <iostream>
#define N 20000
#define M 256
#define INF (1e9)
using namespace std;
int n,m,c[N],x[N],d[N][M],ny,t,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;
    for(int i=0;i<m;i++){
      ny=128+c[i];
      if(ny>255) ny=255;
      if(ny<0) ny=0;
      int t=x[0]-ny;
      d[0][ny]=t*t;
    }
    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++){
	  ny=j+c[k];
	  if(ny>255) ny=255;
	  if(ny<0) ny=0;
	  t=x[i+1]-ny;
	  d[i+1][ny]=min(d[i+1][ny],d[i][j]+t*t);
	}
      }
    ans=INF;
    for(int i=0;i<M;i++) ans=min(ans,d[n-1][i]);
    cout<<ans<<endl;
  }
  return 0;
}