#include<iostream>
#include<math.h>
#include<algorithm>
using namespace std ;
#define INF 1300500100

int table[520][20010] ;

int main()
{
	int n , m ;
	int c[20] , p[20010] ;
	
	while( cin >> n >> m , n  )
	{
		for( int i=0 ; i<m ; i++ ) cin >> c[i] ;
		for( int i=1 ; i<=n ; i++ ) cin >> p[i] ;
		
		for( int i=0 ; i<520 ; i++ )
			for( int j=0 ; j<20010 ; j++ )
				table[i][j] = INF ;
		
		table[255+128][0] = 0 ;
		
		for( int i=1 ; i<=n ; i++ )
		{
			for( int j=0 ; j<=510 ; j++ )
			{
				if( table[j][i-1] != INF )
				{
					for( int k=0 ; k<m ; k++ ){
						int y = j-255+c[k] ;
						if( y > 255 ) y = 255 ;
						else if( y < 0 ) y = 0 ;
						
						table[y+255][i] = min( table[y+255][i] , table[j][i-1]+(p[i]-y)*(p[i]-y) ) ;
					}
				}
			}
		}
		
		int ans = INF ;
		for( int i=0 ; i<=510 ; i++ ) ans = min( ans , table[i][n] ) ;
		cout << ans << endl ;
	}
}