function InitializeDistances (dummy)
{
	GetInformation (actualSequences,filteredData);
	/* preprocess sequences */
	
	LZContent = {Rows(actualSequences),1};

	for (seqCounter = 0; seqCounter < Rows(actualSequences); seqCounter = seqCounter+1)
	{
		aSeq = actualSequences[seqCounter];
		for (siteCounter = Abs(aSeq)-1; siteCounter>0; siteCounter=siteCounter-1)
		{
			if (aSeq[siteCounter]!="?")
			{
				break;
			}
		}
		actualSequences[seqCounter] = aSeq[0][siteCounter];
		LZContent [seqCounter] = Exp (actualSequences[seqCounter]);
	}
	return 0;
}

function ComputeDistanceFormula (s1,s2)
{
	dS1S2 = Exp (actualSequences[s1]+actualSequences[s2]);
	dS2S1 = Exp (actualSequences[s2]+actualSequences[s1]);
	return (dS1S2+dS2S1-LZContent[s1]-LZContent[s2])/(.5*(dS1S2+dS2S1));
}
