#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

typedef long long int lli;
int c[30],x[30000];
lli dp[30000][256];

int sq(int x) {
    return x*x;
}
int add(int x, int y) {
    return max(0, min(255, x+y));
}
int main(void) {
    while(1) {
        int n,m;
        scanf("%d%d",&n,&m);
        if(!n) break;
        memset(dp, 0x3F, sizeof(dp));

        for(int i=0; i<m; i++)
            scanf("%d",&c[i]);
        for(int i=0; i<n; i++)
            scanf("%d",&x[i]);

        dp[0][128] = 0;

        for(int i=0; i<n; i++)
            for(int j=0; j<256; j++)
                for(int k=0; k<m; k++)
                    dp[i+1][add(j,c[k])] = min(dp[i+1][add(j,c[k])], dp[i][j] + sq(x[i]-add(j,c[k])));

        lli res=0xFFFFFFFFFFFF;
        for(int j=0; j<256; j++)
            res = min(res, dp[n][j]);

        printf("%lld\n", res);

    }
    return 0;
}