title: Lexicographically Minimum String Rotation
signature: def lexicographicallyMinimumStringRotation(str_: String) = {
test_code: import scala.collection.mutable.HashMap
  import scala.collection.immutable.HashSet
  
  
  // SOLUTION CODE
  // ============================================
  PLACEHOLDER_CODE_BODY
  
  
  // TESTING CODE 
  // ============================================
  def validateSolution(actual: String , expected: String): Boolean = {
      actual.toString == expected.toString
  }
  
  def driver(str_: String, expected: String): String = {
      try {
          if (validateSolution(PLACEHOLDER_FN_NAME(str_),expected)) {
              "PASSED"
          } else{
              "FAILED"
          }
      }catch{
          case e: Exception => {e.getClass.getName}
      }
  
  }
  object QuestionEvaluator extends App {
  
      println(s"TEST-0...${driver(
        "onWEchl", 
        "EchlonW"    
      )}")   
  
  
      println(s"TEST-1...${driver(
        "2", 
        "2"    
      )}")   
  
  
      println(s"TEST-2...${driver(
        "100", 
        "001"    
      )}")   
  
  
      println(s"TEST-3...${driver(
        "GHbCZA", 
        "AGHbCZ"    
      )}")   
  
  
      println(s"TEST-4...${driver(
        "50568798206105", 
        "05505687982061"    
      )}")   
  
  
      println(s"TEST-5...${driver(
        "001011110001", 
        "000100101111"    
      )}")   
  
  
      println(s"TEST-6...${driver(
        "lljpYhznnyu", 
        "Yhznnyulljp"    
      )}")   
  
  
      println(s"TEST-7...${driver(
        "54499921759984", 
        "17599845449992"    
      )}")   
  
  
      println(s"TEST-8...${driver(
        "11101", 
        "01111"    
      )}")   
  
  
      println(s"TEST-9...${driver(
        "qvypgCYEjsyjwZ", 
        "CYEjsyjwZqvypg"    
      )}")   
  
  }
  
source_py: def lexicographically_minimum_string_rotation(str_):
      n = len(str_)
      arr = ([0] * n)
      concat = (str_ + str_)
      for i in range(n):
          arr[i] = concat[i:(n + i)]
      arr.sort()
      return arr[0]
source_cpp: string lexicographically_minimum_string_rotation(string str) {
    int n = str . length ( );
    string arr [ n ];
    string concat = str + str;
    for ( int i = 0;
    i < n;
    i ++ ) arr [ i ] = concat . substr ( i, n );
    sort ( arr, arr + n );
    return arr [ 0 ];
  }