description: It is a simplified version of problem F2. The difference between them is the constraints (F1: k ≤ 2, F2: k ≤ 10).
  
  You are given an integer n. Find the minimum integer x such that x ≥ n and the number x is k-beautiful.
  
  A number is called k-beautiful if its decimal representation having no leading zeroes contains no more than k different digits. E.g. if k = 2, the numbers 3434443, 55550, 777 and 21 are k-beautiful whereas the numbers 120, 445435 and 998244353 are not.
  
  Input
  
  The first line contains one integer t (1 ≤ t ≤ 10^4) — the number of test cases. Then t test cases follow.
  
  Each test case consists of one line containing two integers n and k (1 ≤ n ≤ 10^9, 1 ≤ k ≤ 2).
  
  Output
  
  For each test case output on a separate line x — the minimum k-beautiful integer such that x ≥ n.
  
  Example
  
  Input
  
  
  4
  1 1
  221 2
  177890 2
  998244353 1
  
  
  Output
  
  
  1
  221
  181111
  999999999
solution: import java.util.*;
  import java.io.*;
  
  public class Main{
      static int t;
      static long n,k;
      static String N;
      static TreeSet<Integer> d;
      public static void main(String[] args) throws IOException {
          String[]data;
          BufferedReader f = new BufferedReader(new InputStreamReader(System.in));
          t = Integer.valueOf(f.readLine());
          while((t--)!=0){
              data = f.readLine().split(" ");
              n = Long.valueOf(data[0]);
              k = Long.valueOf(data[1]);
              N = n+"";
              int dec = N.length();
              d = new TreeSet<>();
              int[]res = new int[dec];
              int[]obj = new int[dec];
              for(int i = 0 ; i < dec ; ++i){
                  obj[i] = Integer.parseInt(N.charAt(i) + "");
              }
              solve(0, res, obj);
              System.out.println(gn(res));
          }
          
      }
      public static boolean solve(int in, int[] res, int[] obj){
          //System.out.println(Arrays.toString(res));
          if(res.length == in){
              int R = res[0], O = obj[0];
              for(int i = 1 ; i < res.length ; i++){
                  R = R*10 + res[i];
                  O = O*10 + obj[i];
              }
              
              return R >= O;
          }else{
              for(int i = 0 ; i < 10 ; ++i){
                  if(i < obj[in] && gn(res) < gn(obj) ){
                      continue;
                  }else{
                      if(d.contains(i)){
                          res[in] = i;
                          if(solve(in+1, res, obj))
                              return true;
                          res[in] = 0;
                      }else{
                          if(d.size() != k){
                              d.add(i);
                              res[in] = i;
                              if(solve(in+1, res, obj))
                                  return true;
                              res[in] = 0;
                              d.remove(i);
                          }
                          
                      }
                  }
              }
  
              return false;
          }
      }
      public static int gn(int[] num){
          int R = num[0];
              for(int i = 1 ; i < num.length ; i++){
                  R = R*10 + num[i];
                  
              }
          return R;
      }
      
  
  }