#include <bits/stdc++.h>
const int INF = 1310720000;
const int dx[8] = {0, 0, 1, -1, 1, 1, -1, -1},
          dy[8] = {1, -1, 0, 0, 1, -1, 1, -1};
int N, M;
int C[16], X[20000];
int dp[20001][256];
int main() {
  while (std::cin >> N >> M, N) {
    for (int i = (0); i < (M); i++) {
      std::cin >> C[i];
    }
    for (int i = (1); i < (N + 1); i++) {
      std::cin >> X[i];
    }
    for (int i = (0); i < (N + 1); i++) {
      for (int y = (0); y < (256); y++) {
        dp[i][y] = INF;
      }
    }
    dp[0][128] = 0;
    for (int i = (0); i < (N); i++) {
      for (int y = (0); y < (256); y++) {
        for (int j = (0); j < (M); j++) {
          int ny = y + C[j];
          if (ny < 0) {
            ny = 0;
          } else if (ny > 255) {
            ny = 255;
          }
          dp[i + 1][ny] = std::min(
              dp[i + 1][ny], dp[i][y] + (X[i + 1] - ny) * (X[i + 1] - ny));
        }
      }
    }
    int min_sum = INF;
    for (int i = (0); i < (256); i++) {
      min_sum = std::min(min_sum, dp[N][i]);
    }
    std::cout << min_sum << std::endl;
  }
}
