function a = VLSE_decode_reference(C,M,b)
	
	% N è la cardinalità della sorgente
	N = numel(C);
	
	% il vettore L contiene le lunghezze delle parole di codice
	L = zeros(1,N);
	for n = 1:N
		L(n) = numel(C{n});
	end
	
	% bits è il numero di bit nel messaggio da decodificare
	bits = numel(b);

	% decodifica senza modificare le dimensioni dei vettori
	a = zeros(1,M);
	m = 0;
	ofs = 0;
	while ofs < bits
		for n = 1:N
			if ofs+L(n) <= bits && sum(C{n} == b(ofs+(1:L(n)))) == L(n)
				m = m + 1;
				a(m) = n;
				ofs = ofs + L(n);
				break
			end
		end
	end

% 	% decodifica alternativa
% 	a = [];
% 	while numel(b)
% 		for n = 1:N
% 			if L(n)<=numel(b) && sum(abs(b(1:L(n))-C{n}))==0
% 				a=[a,n];
% 				b(1:L(n))=[];
% 				break
% 			end
% 		end
% 	end
		