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

int N,M;
int C[20];
int X[20001];

int dp[20001][257];

#define INF (1<<30)

int main(){
  while(  cin >> N >> M && (N||M) ){
    for(int i=0;i<M;i++) cin >> C[i];
    for(int i=0;i<N;i++) cin >> X[i];
    
    fill(dp[0],dp[20001],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 nd = max ( 0 , min( 255, j + C[k]) );
	  dp[i+1][nd] = min( dp[i+1][nd],
			     dp[i][j] + (nd-X[i])*(nd-X[i]) );
	}
      }
    }
    int res = INF;
    for(int i=0;i<256;i++) res = min( res ,dp[N][i] );
    cout << res << endl;
  }
}