#include<bits/stdc++.h>
using namespace std;

int main(){
  int n,m;
  while(cin>>n>>m,n){
    vector<int> c(m);
    for(int i=0;i<m;i++) cin>>c[i];
    vector<int> x(n);
    for(int i=0;i<n;i++) cin>>x[i];

    const int INF=1e9;
    vector<vector<int>> dp(n+1,vector<int>(256,INF));
    dp[0][128]=0;

    auto isrange=[](int x){return 0<=x && x<256;};
    auto square=[](int x){return x*x;};
    
    for(int i=0;i<n;i++){
      for(int j=0;j<256;j++){
	//renew dp[i+1][j];
	for(int k=0;k<m;k++){
	  if(isrange(j-c[k])) dp[i+1][j]=min(dp[i+1][j],dp[i][j-c[k]]+square(x[i]-j));
	  if(j==255){
	    for(int r=0;r<c[k];r++) dp[i+1][j]=min(dp[i+1][j],dp[i][j-r]+square(x[i]-j));
	  }
	  if(j==0){
	    for(int r=0;r<-c[k];r++) dp[i+1][j]=min(dp[i+1][j],dp[i][r]+square(x[i]-j));
	  }
	}
      }
    }
    cout<<*min_element(dp[n].begin(),dp[n].end())<<endl;
  }

  return 0;
}