public int getMinimum(int[] numbers, int goal) {
		boolean[] bits = new boolean[32];
		int res=1<<30;
		for (int i = 0; i < 31; i++) {
			if ( (goal & 1 << i) ==0 )
			{
				continue;
			}

			int cnt = 0;
			for (int n:numbers )
			{
				cnt +=(( goal | n ) == goal && (( n & 1 << i )>0))?1:0;
			}
			res = Math.min( res, cnt );			
			
			bits[i] = ((1 << i & goal) > 0);
		}
	
		return res;
	}