#include <iostream>
using namespace std;
int n,m,a,b,dp[20001][256],s[20000],t[16],ans,L;
void ini(void){
    for(int i=0;i<=20000;i++){
        for(int j=0;j<256;j++){
            dp[i][j]=1e9;
        }
    }
}
int main(void){
    while(1){
    cin>>n>>m;
    if(n==0&&m==0)return 0;
    ans=1e9;
    ini();
    for(int i=0;i<m;i++){
        cin>>t[i];
    }
    for(int i=0;i<n;i++)cin>>s[i];
    dp[0][128]=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<=255;j++){
            if(dp[i][j]==1e9)continue;
            for(int k=0;k<m;k++){
                L=j+t[k];
                L=min(255,L);
                L=max(0,L);
                dp[i+1][L]=min(dp[i+1][L],dp[i][j]+(L-s[i])*(L-s[i]));
            }
        }
    }
    for(int i=0;i<256;i++){
        //cout<<dp[n][i]<<endl;
        ans=min(ans,dp[n][i]);
    }
    cout<<ans<<endl;
    }
}

