private int test_constOverlapVariableLength(String organismName, int kmerUpperLength, boolean logOnlyLongestCommonSubstringLength)
			throws Exception {
		
		int kmerLength;
		int kmersOverlapLength;
		int graphDegree;
		
		int smallestKmerLengthToProduceCorrectResult = 0;
		boolean smallestSaved = false;
		
		int kmerLowerLength = 2;
		
		Logger.InitializeFile(organismName, "constOverlapVarLength", Integer.toString(kmerUpperLength), "",
				logOnlyLongestCommonSubstringLength);

		int i = kmerLowerLength;
		
		String inputSequence = null;
		String resultSequence = null;

		do {
			kmerLength = i;
			kmersOverlapLength = kmerLength - 1;
			graphDegree = kmerLength;

			Logger.log(smallSeparator);

			AssembleFromFileCommand assembleFromFileCommand = new AssembleFromFileCommand(organismName, kmerLength,
					kmersOverlapLength, graphDegree);

			resultSequence = TimeMeasureHandler.executeAndMeasure(assembleFromFileCommand, "whole operation");
			inputSequence = assembleFromFileCommand.getInputSequence();

			Logger.log("k-mer length: " + kmerLength);
			Logger.log("overlap: " + kmersOverlapLength);
			Logger.log("graph degree: " + graphDegree);

			if(!smallestSaved) {
				if(inputSequence.equals(resultSequence)) {
					smallestKmerLengthToProduceCorrectResult = kmerLength;
					smallestSaved = true;
				}
			}
			
			++i;
		} while (i < kmerUpperLength);

		Logger.log("genome length: " + (inputSequence == null ? 0 : inputSequence.length()));
		
		return smallestKmerLengthToProduceCorrectResult;
	}