code: func selectBest(order int, p1, p2 string) (string, error) {
  	var f, s []string
  	switch {
  	case order < 0:
  		f = strings.Split(p2, ",")
  		s = strings.Split(p1, ",")
  	case order > 0:
  		f = strings.Split(p1, ",")
  		s = strings.Split(p2, ",")
  	default: // Exact same preferences.
  		p := strings.Split(p1, ",")
  		return p[0], nil
  	}
  
  	for _, fc := range f {
  		for _, sc := range s {
  			if fc == sc {
  				return fc, nil
  			}
  		}
  	}
  
  	return "", errors.New("No algorithms in common!")
  }
docs: // Determines which algorithm to use.  Note:  f(a, b) = f(b, a)