#include<iostream>
#include<algorithm>
#define NUM 256
using namespace std;

int dp[20001][NUM];

int main(){
  int n,m;
  while(cin>>n>>m,n){
    for(int i=0;i<=n;i++)
      for(int j=0;j<NUM;j++)
	dp[i][j]=1<<30;
    dp[0][128]=0;
    int c[m],x[n];
    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<NUM;j++){
	for(int k=0;k<m;k++){
	  if(j+c[k]<=0){
	    dp[i+1][0]=min(dp[i+1][0],dp[i][j] + x[i]*x[i]);
	  }else if(j+c[k]>=255){
	    dp[i+1][255]=min(dp[i+1][255],dp[i][j] + (x[i]-255)*(x[i]-255));
	  }else{
	    dp[i+1][j+c[k]]=min(dp[i+1][j+c[k]],dp[i][j] + (x[i]-j-c[k])*(x[i]-j-c[k]));
	  }
	}
      }
    }
    // for(int j=0;j<256;j++){
    //   for(int i=0;i<n;i++){
    // 	cout << dp[i][j] << " ";
    //   }
    //   cout << endl;
    // }

    int res=1<<30;
    for(int i=0;i<NUM;i++)res=min(res,dp[n][i]);
    cout << res << endl;
  }
  return 0;
}