#include <bits/stdc++.h>
using namespace std;
int N, M, C[16], X[20000];
long long dp[20000][256];
int main(void) {
  while (cin >> N >> M, N || M) {
    for (int i = ((int)0); i < ((int)M); i++) cin >> C[i];
    for (int i = ((int)0); i < ((int)N); i++) cin >> X[i];
    for (int i = ((int)0); i < ((int)N + 1); i++)
      for (int j = ((int)0); j < ((int)256); j++) dp[i][j] = 100000000;
    dp[0][128] = 0;
    for (int i = ((int)0); i < ((int)N); i++)
      for (int j = ((int)0); j < ((int)256); j++)
        if (dp[i][j] < 100000000)
          for (int k = ((int)0); k < ((int)M); k++) {
            long long y = max(0, min(255, j + C[k]));
            dp[i + 1][y] =
                min(dp[i + 1][y], dp[i][j] + (y - X[i]) * (y - X[i]));
          }
    long long ans = 100000000;
    for (int i = ((int)0); i < ((int)256); i++) ans = min(ans, dp[N][i]);
    cout << ans << endl;
  }
}
