#include <bits/stdc++.h>
using namespace std;
long long dp[20000 + 1][256];
int c[16];
int x[20000 + 1];
int n, m;
void solve() {
  dp[0][128] = 0;
  for (int i = 0; i + 1 <= n; i++) {
    for (int j = 0; j < 256; j++) {
      if (dp[i][j] == LONG_MAX) continue;
      for (int k = 0; k < m; k++) {
        int t = j + c[k];
        if (t < 0) t = 0;
        if (t > 255) t = 255;
        int s = (t - x[i + 1]) * (t - x[i + 1]);
        dp[i + 1][t] = min(dp[i][j] + s, dp[i + 1][t]);
      }
    }
  }
  long long ans = LONG_MAX;
  for (int i = 0; i < 256; i++) ans = min(ans, dp[n][i]);
  cout << ans << endl;
}
void init() {
  for (int i = 0; i < 20000; i++)
    for (int j = 0; j < 256; j++) dp[i][j] = LONG_MAX;
}
int main() {
  while (true) {
    cin >> n >> m;
    if (n == 0 && m == 0) return 0;
    init();
    for (int i = 0; i < m; i++) cin >> c[i];
    for (int i = 1; i <= n; i++) cin >> x[i];
    solve();
  }
}
