#include<bits/stdc++.h>
using namespace std;

const int INF = 1e8;

int main(){
  int n,m;
  while(cin >> n >> m, n){
    vector<int> c(m);
    for(int i=0;i<m;i++)cin >> c[i];
    vector<int> x(n);
    for(int i=0;i<n;i++)cin >> x[i];

    vector<int> cur(256,INF), nxt(256);
    cur[128] = 0;

    for(int i=0;i<n;i++){
      for(int j=0;j<256;j++)nxt[j] = INF;

      for(int j=0;j<256;j++){
	for(int k=0;k<m;k++){
	  int nj = min(255, max(0,j + c[k]) );
	  int dif = nj-x[i];
	  nxt[nj] = min(nxt[nj], cur[j] + dif*dif);
	}
      }
      swap(cur, nxt);
    }

    cout << *min_element(cur.begin(),cur.end()) << endl;
  }

}