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.io.BufferedReader;
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.FileNotFoundException;
  import java.io.FileOutputStream;
  import java.io.InputStreamReader;
  import java.io.PrintWriter;
  import java.math.BigInteger;
  import java.util.ArrayList;
  import java.util.Arrays;
  import java.util.BitSet;
  import java.util.Calendar;
  import java.util.Collections;
  import java.util.Comparator;
  import java.util.HashMap;
  import java.util.HashSet;
  import java.util.LinkedList;
  import java.util.PriorityQueue;
  import java.util.SortedSet;
  import java.util.Stack;
  import java.util.StringTokenizer;
  import java.util.TreeMap;
  import java.util.TreeSet;
  
  /**
   * #
   *
   * @author pttrung
   */
  public class F1_Round_739_Div3 {
      public static long MOD = 1000000007;
  
      static long[][] dp;
      static HashMap<Integer, Long> map = new HashMap<>();
  
      public static void main(String[] args) throws FileNotFoundException {
          // PrintWriter out = new PrintWriter(new FileOutputStream(new File(
          // "output.txt")));
          PrintWriter out = new PrintWriter(System.out);
          Scanner in = new Scanner();
          int T = in.nextInt();
          for (int Z = 0; Z < T; Z++) {
              int n = in.nextInt();
              int k = in.nextInt();
              out.println(cal(n, k));
          }
          out.close();
      }
  
      static long cal(int n, int K) {
          String N = "" + n;
          long result = Long.MAX_VALUE;
          if (K == 2 && map.containsKey(n)) {
              return map.get(n);
          }
          for (int i = 1; i < 10; i++) {
              int c = 0;
              long cur = 0;
              for (int j = 0; j < N.length(); j++) {
                  int v = N.charAt(j) - '0';
                  if (v > i) {
                      if (c < 1) {
                          c = -1;
                      }
                  } else if (v < i && c == 0) {
                      c = 1;
                  }
                  cur = cur * 10 + i;
              }
              if (c < 0) {
                  cur = cur * 10 + i;
              }
              result = Long.min(result, cur);
          }
          //System.out.println(result);
          if (K > 1) {
              for (int i = 0; i < 10; i++) {
                  for (int j = i + 1; j < 10; j++) {
                      int mask = (1 << i) | (1 << j);
                      dp = new long[2][N.length()];
                      long v = cal(0, 0, mask, N);
                      if (v != -1) {
                          result = Long.min(v, result);
                      }
                  }
              }
              map.put(n, result);
          }
          return result;
      }
  
      static long cal(int index, int c, int mask, String data) {
          if (index == data.length()) {
              return 0;
          }
          if (dp[c][index] != 0) {
              return dp[c][index];
          }
          int cur = data.charAt(index) - '0';
          long result = -1;
          for (int i = 0; i < 10; i++) {
              if (((1 << i) & mask) == 0) {
                  continue;
              }
              if (i >= cur || c == 1) {
                  long v = cal(index + 1, i > cur ? 1 : c, mask, data);
                  if (v != -1) {
                      v += pow(10, data.length() - index - 1) * i;
                      if (result == -1 || result > v) {
                          result = v;
                      }
                  }
              }
          }
          return dp[c][index] = result;
      }
  
  
      static int abs(int a) {
          return a < 0 ? -a : a;
      }
  
  
      public static int[] KMP(String val) {
          int i = 0;
          int j = -1;
          int[] result = new int[val.length() + 1];
          result[0] = -1;
          while (i < val.length()) {
              while (j >= 0 && val.charAt(j) != val.charAt(i)) {
                  j = result[j];
              }
              j++;
              i++;
              result[i] = j;
          }
          return result;
  
      }
  
      public static boolean nextPer(int[] data) {
          int i = data.length - 1;
          while (i > 0 && data[i] < data[i - 1]) {
              i--;
          }
          if (i == 0) {
              return false;
          }
          int j = data.length - 1;
          while (data[j] < data[i - 1]) {
              j--;
          }
          int temp = data[i - 1];
          data[i - 1] = data[j];
          data[j] = temp;
          Arrays.sort(data, i, data.length);
          return true;
      }
  
      public static int digit(long n) {
          int result = 0;
          while (n > 0) {
              n /= 10;
              result++;
          }
          return result;
      }
  
      public static double dist(long a, long b, long x, long y) {
          double val = (b - a) * (b - a) + (x - y) * (x - y);
          val = Math.sqrt(val);
          double other = x * x + a * a;
          other = Math.sqrt(other);
          return val + other;
  
      }
  
      public static class Point {
  
          long x;
          long y;
  
          public Point(long start, long end) {
              this.x = start;
              this.y = end;
          }
  
          public String toString() {
              return x + " " + y;
          }
  
      }
  
      public static class FT {
  
          long[] data;
  
          FT(int n) {
              data = new long[n];
          }
  
          public void update(int index, long value) {
              while (index < data.length) {
                  data[index] += value;
                  index += (index & (-index));
              }
          }
  
          public long get(int index) {
              long result = 0;
              while (index > 0) {
                  result += data[index];
                  index -= (index & (-index));
              }
              return result;
  
          }
      }
  
      public static long gcd(long a, long b) {
          if (b == 0) {
              return a;
          }
          return gcd(b, a % b);
      }
  
      public static long pow(long a, int b) {
          if (b == 0) {
              return 1;
          }
          if (b == 1) {
              return a;
          }
  
          long val = pow(a, b / 2);
          if (b % 2 == 0) {
              return val * val;
          } else {
              return val * (val * a);
  
          }
      }
  
      static class Scanner {
  
          BufferedReader br;
          StringTokenizer st;
  
          public Scanner() throws FileNotFoundException {
              // System.setOut(new PrintStream(new BufferedOutputStream(System.out), true));
              br = new BufferedReader(new InputStreamReader(System.in));
              //br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("input.txt"))));
          }
  
          public String next() {
  
              while (st == null || !st.hasMoreTokens()) {
                  try {
                      st = new StringTokenizer(br.readLine());
                  } catch (Exception e) {
                      throw new RuntimeException();
                  }
              }
              return st.nextToken();
          }
  
          public long nextLong() {
              return Long.parseLong(next());
          }
  
          public int nextInt() {
              return Integer.parseInt(next());
          }
  
          public double nextDouble() {
              return Double.parseDouble(next());
          }
  
          public String nextLine() {
              st = null;
              try {
                  return br.readLine();
              } catch (Exception e) {
                  throw new RuntimeException();
              }
          }
  
          public boolean endLine() {
              try {
                  String next = br.readLine();
                  while (next != null && next.trim().isEmpty()) {
                      next = br.readLine();
                  }
                  if (next == null) {
                      return true;
                  }
                  st = new StringTokenizer(next);
                  return st.hasMoreTokens();
              } catch (Exception e) {
                  throw new RuntimeException();
              }
          }
      }
  }