#include <iostream>
#include <vector>
using namespace std;

int main(){
    int inf = 1e9;
    int N,M;
    while(cin >> N >> M && N){
        vector<int> C(M+1),X(N+1);
        vector<vector<int>> dp(N+1,vector<int>(256,inf));
        dp[0][128] = 0;
        for(int i=1;i<=M;i++) cin >> C[i];
        for(int i=1;i<=N;i++) cin >> X[i];
        for(int i=0;i<N;i++) for(int j=0;j<=255;j++){
            for(int k=1;k<=M;k++){
                int ne = j+C[k];
                if(ne>255) ne = 255;
                if(ne<0) ne = 0;
                dp[i+1][ne] = min(dp[i+1][ne],dp[i][j]+(X[i+1]-ne)*(X[i+1]-ne));
            }
        }
        int ans = inf;
        for(int i=0;i<=255;i++) ans = min(ans,dp[N][i]);
        cout << ans << endl;
    }
}
