#include <iostream>
#include <algorithm>
using namespace std;

typedef long long lli;

const int MAX_N = 20001;
const int MAX_M = 16;
const int MAX_V = 256;
const lli INF = 1LL<<60;

lli T[MAX_N][MAX_V];
int N, M;
lli C[MAX_M];
lli x[MAX_N];

lli solve() {
  fill(T[0], T[N+1], INF);
  T[0][128] = 0LL;
  for(int i = 1; i <= N; ++i) {
    for(int j = 0; j <= 255; ++j) {
      for(int k = 0; k < M; ++k) {
	lli value = j + C[k];
	if(value < 0LL) value = 0LL;
	if(value > 255LL) value = 255LL;
	T[i][value] = min(T[i][value], T[i-1][j] + (x[i]-value)*(x[i]-value));
      }
    }
  }
  lli res = INF;
  for(int i = 0; i <= 255; ++i) {
    res = min(res, T[N][i]);
  }
  return res;
}

int main() {
  while(cin >> N >> M && (N || M)) {
    for(int i = 0; i < M; ++i) {
      cin >> C[i];
    }
    for(int i = 1; i <= N; ++i) {
      cin >> x[i];
    }
    cout << solve() << endl;
  }
}