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

#define INF 1e+9
    int dp[700][20100];
int main(){

  while(1){
    int N,M;
    cin >> N >> M;
    if(!N and !M) break;

    vector<int> c(M);
    for(int i=0; i<M; i++)
      cin >> c[i];
  
    vector<int> x(N+1);
    x[0] = 128;
    for(int i=1; i<=N; i++)
      cin >> x[i];

    // DP

    for(int i=0; i<600; i++)
      for(int j=0; j<20100; j++)
	dp[i][j] = INF;

    dp[128][0] = 0;
    
    for(int i=0; i<N; i++){
      for(int j=0; j<=255; j++){
	if(dp[j][i] != INF){
	  for(int dy : c){
	    int ny = j+dy;
	    if(ny < 0) ny = 0;
	    if(ny > 255) ny = 255;
	    dp[ny][i+1] = min(dp[ny][i+1],dp[j][i] + (x[i+1]-ny)*(x[i+1]-ny));
	  }
	}
      }
    }
  
    int ans = INF;
    for(int j=0; j<=255; j++){
      ans = min(dp[j][N],ans);
    }
    cout << ans << endl;

  }


}