#include<iostream>
#include<cstdlib>
using namespace std;

int main()
{
  int N,M,C[16],x[20002];
  long long DP[2][256];
  long long mi,a,b,y,ans;

  while(1){
    cin>>N>>M;
    if(N==0 && M==0)break;
    for(int i=0;i<M;i++)cin>>C[i];
    for(int i=1;i<N+1;i++)cin>>x[i];
    for(int i=0;i<256;i++)DP[0][i]=1000000000;
    DP[0][128]=0;
    for(int i=1;i<N+1;i++){
      for(int j=0;j<256;j++)DP[i%2][j]=1000000000;
      for(int j=0;j<256;j++){
	if(DP[(i-1)%2][j]!=1000000000){
	  for(int k=0;k<M;k++){
	    a=j+C[k];
	    if(a<0)a=0;
	    if(a>255)a=255;
	    b=DP[(i-1)%2][j]+(a-x[i])*(a-x[i]);
	    DP[i%2][a]=min(DP[i%2][a],b);
	  }
	}
      }
    }
    ans=1000000000;
    for(int i=0;i<256;i++)ans=min(ans,DP[N%2][i]);
    cout<<ans<<endl;
  }
  return 0;
}