private double theLastStep(int step) throws IOException {

		double squaredEpsilon = 0.0;
		double RMSE = 0;
		int probeCount = 0;
		if(null != probeFiles) {
			BufferedReader br = null;
			for(File file:probeFiles) {
				br = new BufferedReader(new FileReader(file));
				String fileName = file.getName();
				String line = null;
				while(null != (line = br.readLine())) {
					String[] strs = line.split(",");
					int score = Integer.valueOf(strs[1]);
					double epsilon;
					switch (step) {
					case 1:
						epsilon = score - overallMean - movieParam.get(fileName);
						break;
					case 2:
						epsilon = score - overallMean - movieParam.get(fileName) - userParam.get(strs[0]);
						break;
					default:
						epsilon = score - overallMean;
					}
					squaredEpsilon += epsilon * epsilon;
					probeCount++;
				}
				br.close();
			}
		}
		
		if(probeCount != 0) {
			RMSE = Math.sqrt(squaredEpsilon/probeCount);
		}
		return RMSE;
	}