#include <bits/stdc++.h>
using namespace std;
int n, m;
int c[16], x[20000];
long dp[20000][256];
long rec(int p, int y) {
  if (dp[p][y] >= 0) return dp[p][y];
  if (p == n) return 0;
  long ret = LONG_MAX;
  for (int i = 0; i < m; ++i) {
    int ny = y + c[i];
    if (ny < 0)
      ny = 0;
    else if (ny > 255)
      ny = 255;
    ret = min(ret, rec(p + 1, ny) + (ny - x[p]) * (ny - x[p]));
  }
  return dp[p][y] = ret;
}
int main() {
  while (1) {
    scanf(" %d %d", &n, &m);
    if (n == 0) break;
    for (int i = 0; i < m; ++i) scanf(" %d", &c[i]);
    for (int i = 0; i < n; ++i) scanf(" %d", &x[i]);
    memset(dp, -1, sizeof(dp));
    printf("%ld\n", rec(0, 128));
  }
}
