#include<iostream>
#include<vector>
#include<algorithm>
#define INF 1<<30
using namespace std;

int main(){
  int n,m;
  while(cin>>n>>m,n+m){
    vector<int> cn(m);
    vector<int> xn(n);
    for(int i=0;i<m;i++) cin>>cn[i];
    for(int i=0;i<n;i++) cin>>xn[i];
    vector<vector<int> > dp(n+1,vector<int>(256,INF));
    dp[0][128]=0;
    for(int i=0;i<n;i++){
      for(int j=0;j<256;j++){
	if(dp[i][j] == INF) continue;
	for(int k=0;k<m;k++){
	  int calc=j+cn[k];
	  if(calc < 0) calc = 0;
	  if(calc > 255) calc= 255;
	  int t=(xn[i]-calc)*(xn[i]-calc)+dp[i][j];
	  dp[i+1][calc]=min(dp[i+1][calc],t);
	}
      }
    }
    int _min=1<<30;
    for(int i=0;i<256;i++){
      _min=min(_min,dp[n][i]);
    }
    cout<<_min<<endl;
  }

  return 0;
}