code: private static String matchPathLists(List<String> r,List<String> f) {
  		int i;
  		int j;
  		String s;
  		// start at the beginning of the lists
  		// iterate while both lists are equal
  		s = "";
  		i = r.size()-1;
  		j = f.size()-1;
  
  		// first eliminate common root
  		while((i >= 0)&&(j >= 0)&&(r.get(i).equals(f.get(j)))) {
  			i--;
  			j--;
  		}
  
  		// for each remaining level in the home path, add a ..
  		for(;i>=0;i--) {
  			s += ".." + File.separator;
  		}
  
  		// for each level in the file path, add the path
  		for(;j>=1;j--) {
  			s += f.get(j) + File.separator;
  		}
  
  		// file name
  		s += f.get(j);
  		return s;
  	}
docs: figure out a string representing the relative path of
  'f' with respect to 'r'
  @param r home path
  @param f path of file