description: You are given a digital clock with n digits. Each digit shows an integer from 0 to 9, so the whole clock shows an integer from 0 to 10^n-1. The clock will show leading zeroes if the number is smaller than 10^{n-1}.
  
  You want the clock to show 0 with as few operations as possible. In an operation, you can do one of the following: 
  
    * decrease the number on the clock by 1, or 
    * swap two digits (you can choose which digits to swap, and they don't have to be adjacent). 
  
  
  
  Your task is to determine the minimum number of operations needed to make the clock show 0.
  
  Input
  
  Each test contains multiple test cases. The first line contains the number of test cases t (1 ≤ t ≤ 10^3).
  
  The first line of each test case contains a single integer n (1 ≤ n ≤ 100) — number of digits on the clock.
  
  The second line of each test case contains a string of n digits s_1, s_2, …, s_n (0 ≤ s_1, s_2, …, s_n ≤ 9) — the number on the clock.
  
  Note: If the number is smaller than 10^{n-1} the clock will show leading zeroes.
  
  Output
  
  For each test case, print one integer: the minimum number of operations needed to make the clock show 0.
  
  Example
  
  Input
  
  
  7
  3
  007
  4
  1000
  5
  00000
  3
  103
  4
  2020
  9
  123456789
  30
  001678294039710047203946100020
  
  
  Output
  
  
  7
  2
  0
  5
  6
  53
  115
  
  Note
  
  In the first example, it's optimal to just decrease the number 7 times.
  
  In the second example, we can first swap the first and last position and then decrease the number by 1.
  
  In the third example, the clock already shows 0, so we don't have to perform any operations.
solution: import java.util.*;
  import java.io.*;
  
  public class Main {
  
      static long startTime = System.currentTimeMillis();
  
      // for global initializations and methods starts here
  
      // global initialisations and methods end here
  
      static void run() {
          boolean tc = true;
          //AdityaFastIO r = new AdityaFastIO();
          FastReader r = new FastReader();
  
          try (OutputStream out = new BufferedOutputStream(System.out)) {
  
              //long startTime = System.currentTimeMillis();
  
              int testcases = tc ? r.ni() : 1;
              int tcCounter = 1;
              // Hold Here Sparky------------------->>>
              // Solution Starts Here
  
              start:
              while (testcases-- > 0) {
  
                  int n = r.ni();
                  char[] s = r.word().toCharArray();
  
                  int count = 0;
                  int k = 0;
                  for (char c : s) {
                      count += (c - '0');
                      if (k < n - 1 && c != '0') count++;
                      k++;
                  }
  
                  out.write((count + " ").getBytes());
                  out.write(("\n").getBytes());
              }
              // Solution Ends Here
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  
      static class AdityaFastIO {
          final private int BUFFER_SIZE = 1 << 16;
          private final DataInputStream din;
          private final byte[] buffer;
          private int bufferPointer, bytesRead;
          public BufferedReader br;
          public StringTokenizer st;
  
          public AdityaFastIO() {
              br = new BufferedReader(new InputStreamReader(System.in));
              din = new DataInputStream(System.in);
              buffer = new byte[BUFFER_SIZE];
              bufferPointer = bytesRead = 0;
          }
  
          public AdityaFastIO(String file_name) throws IOException {
              din = new DataInputStream(new FileInputStream(file_name));
              buffer = new byte[BUFFER_SIZE];
              bufferPointer = bytesRead = 0;
          }
  
          public String word() {
              while (st == null || !st.hasMoreElements()) {
                  try {
                      st = new StringTokenizer(br.readLine());
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
              return st.nextToken();
          }
  
          public String line() {
              String str = "";
              try {
                  str = br.readLine();
              } catch (IOException e) {
                  e.printStackTrace();
              }
              return str;
          }
  
          public String readLine() throws IOException {
              byte[] buf = new byte[100000001]; // line length
              int cnt = 0, c;
              while ((c = read()) != -1) {
                  if (c == '\n') break;
                  buf[cnt++] = (byte) c;
              }
              return new String(buf, 0, cnt);
          }
  
          public int ni() throws IOException {
              int ret = 0;
              byte c = read();
              while (c <= ' ') c = read();
              boolean neg = (c == '-');
              if (neg) c = read();
              do {
                  ret = ret * 10 + c - '0';
              }
              while ((c = read()) >= '0' && c <= '9');
              if (neg) return -ret;
              return ret;
          }
  
          public long nl() throws IOException {
              long ret = 0;
              byte c = read();
              while (c <= ' ') c = read();
              boolean neg = (c == '-');
              if (neg) c = read();
              do {
                  ret = ret * 10 + c - '0';
              }
              while ((c = read()) >= '0' && c <= '9');
              if (neg) return -ret;
              return ret;
          }
  
          public double nd() throws IOException {
              double ret = 0, div = 1;
              byte c = read();
              while (c <= ' ') c = read();
              boolean neg = (c == '-');
              if (neg) c = read();
              do {
                  ret = ret * 10 + c - '0';
              }
              while ((c = read()) >= '0' && c <= '9');
              if (c == '.') while ((c = read()) >= '0' && c <= '9') ret += (c - '0') / (div *= 10);
              if (neg) return -ret;
              return ret;
          }
  
          private void fillBuffer() throws IOException {
              bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);
              if (bytesRead == -1) buffer[0] = -1;
          }
  
          private byte read() throws IOException {
              if (bufferPointer == bytesRead) fillBuffer();
              return buffer[bufferPointer++];
          }
  
          public void close() throws IOException {
              if (din == null) return;
              din.close();
          }
      }
  
      public static void main(String[] args) throws Exception {
          run();
      }
  
      static long mod = 998244353;
  
      static long modInv(long base, long e) {
          long result = 1;
          base %= mod;
          while (e > 0) {
              if ((e & 1) > 0) result = result * base % mod;
              base = base * base % mod;
              e >>= 1;
          }
          return result;
      }
  
      static class FastReader {
          BufferedReader br;
          StringTokenizer st;
  
          public FastReader() {
              br = new BufferedReader(new InputStreamReader(System.in));
          }
  
          String word() {
              while (st == null || !st.hasMoreElements()) {
                  try {
                      st = new StringTokenizer(br.readLine());
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
              }
              return st.nextToken();
          }
  
          String line() {
              String str = "";
              try {
                  str = br.readLine();
              } catch (IOException e) {
                  e.printStackTrace();
              }
              return str;
          }
  
          int ni() {
              return Integer.parseInt(word());
          }
  
          long nl() {
              return Long.parseLong(word());
          }
  
          double nd() {
              return Double.parseDouble(word());
          }
      }
  
      static int MOD = (int) (1e9 + 7);
  
      static long powerLL(long x, long n) {
          long result = 1;
          while (n > 0) {
              if (n % 2 == 1) result = result * x % MOD;
              n = n / 2;
              x = x * x % MOD;
          }
          return result;
      }
  
      static long powerStrings(int i1, int i2) {
          String sa = String.valueOf(i1);
          String sb = String.valueOf(i2);
          long a = 0, b = 0;
          for (int i = 0; i < sa.length(); i++) a = (a * 10 + (sa.charAt(i) - '0')) % MOD;
          for (int i = 0; i < sb.length(); i++) b = (b * 10 + (sb.charAt(i) - '0')) % (MOD - 1);
          return powerLL(a, b);
      }
  
      static long gcd(long a, long b) {
          if (a == 0) return b;
          else return gcd(b % a, a);
      }
  
      static long lcm(long a, long b) {
          return (a * b) / gcd(a, b);
      }
  
      static long lower_bound(List<Long> list, long k) {
          int s = 0;
          int e = list.size();
          while (s != e) {
              int mid = (s + e) >> 1;
              if (list.get(mid) < k) s = mid + 1;
              else e = mid;
          }
          if (s == list.size()) return -1;
          return s;
      }
  
      static int upper_bound(List<Long> list, long k) {
          int s = 0;
          int e = list.size();
          while (s != e) {
              int mid = (s + e) >> 1;
              if (list.get(mid) <= k) s = mid + 1;
              else e = mid;
          }
          if (s == list.size()) return -1;
          return s;
      }
  
      static void addEdge(ArrayList<ArrayList<Integer>> graph, int edge1, int edge2) {
          graph.get(edge1).add(edge2);
          graph.get(edge2).add(edge1);
      }
  
      public static class Pair implements Comparable<Pair> {
          int first;
          int second;
  
          public Pair(int first, int second) {
              this.first = first;
              this.second = second;
          }
  
          public String toString() {
              return "(" + first + "," + second + ")";
          }
  
          public int compareTo(Pair o) {
              // TODO Auto-generated method stub
              if (this.first != o.first)
                  return (int) (this.first - o.first);
              else return (int) (this.second - o.second);
          }
      }
  
      public static class PairC<X, Y> implements Comparable<PairC> {
          X first;
          Y second;
  
          public PairC(X first, Y second) {
              this.first = first;
              this.second = second;
          }
  
          public String toString() {
              return "(" + first + "," + second + ")";
          }
  
          public int compareTo(PairC o) {
              // TODO Auto-generated method stub
              return o.compareTo((PairC) first);
          }
      }
  
      static boolean isCollectionsSorted(List<Long> list) {
          if (list.size() == 0 || list.size() == 1) return true;
          for (int i = 1; i < list.size(); i++) if (list.get(i) <= list.get(i - 1)) return false;
          return true;
      }
  
      static boolean isCollectionsSortedReverseOrder(List<Long> list) {
          if (list.size() == 0 || list.size() == 1) return true;
          for (int i = 1; i < list.size(); i++) if (list.get(i) >= list.get(i - 1)) return false;
          return true;
      }
  
  }