Go: package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
	"unicode/utf8"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	var strs []string
	var a, b, sum int64
	var digits int
	for scanner.Scan() {
		strs = strings.Split(scanner.Text(), " ")
		a, _ = strconv.ParseInt(strs[0], 10, 64)
		b, _ = strconv.ParseInt(strs[1], 10, 64)

		sum = a + b
		// goでlen(string)はbyte数が返る
		digits = utf8.RuneCountInString(strconv.FormatInt(sum, 10))

		fmt.Printf("%d\n", digits)
	}
}

C++: //
//  main.cpp
//  b
//
//  Created by h3037178 on 2017/07/31.
//  Copyright ?? 2017??´ ?????£?????????. All rights reserved.
//

#include <iostream>
#include <algorithm>
using namespace std;
int main(){
    int i,o,b=0;
    for(int p=0;p<200;p++){
        cin>>i>>o;
        b=0;
        if(i+o<=0){
            break;
        }
        for(int j=1;j<=1000000000000;j=j*10){
            if(i+o>=j){
                b++;
            }else{
                break;
            }
        }
        cout<<b<<endl;
        }
}

C++: #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <math.h>
#include <vector>
#include <queue>
#include <algorithm>
#include <iterator>
#include <sstream>
#include <string>
using namespace std;
#define rep(I,N) for(int I = 0; I < (int)(N); I++)
#define FIN(V) cout<<V<<endl
#define pb push_back
#define INF (1 << 30)
typedef pair<int, int> P;
typedef long long ll;
typedef priority_queue<int> pq;

int main(void){
	int a;
	while(cin>>a){
		int b;
		cin >> a;
		int c = a + b;
		stringstream ss;
		string s;
		ss << c;
		s = ss.str();
		cout << s.size() << endl;
	}


	return 0;	
}

C++: #include<iostream>
#include<algorithm>

using namespace std;

int main() 
{
	int a, b,tmp,len,tmp_1=1;
	int i, j;
	for (i = 0; i < 200; i++) {
		tmp_1 = 1;
		cin >> a >> b;
		tmp = a + b;
		for (j = 1;j<10 ; j++) {
			tmp_1 *= 10;
			
			len = tmp / (tmp_1);
			if (len == 0) {
				break;
			}
		}
		cout << j << "\n";
		
	}

	return 0;
}

C++: #include <cstdio>

int main()
{
  int a, b;
  while(scanf("%d%d", &a, &b) != EOF){
    a += b;
    int cnt = 0;
    while(a){
      cnt++;
      a /= 10;
    }
    printf("%d\n", cnt);
  }
  return 0;
}

C++: #include <iostream>
#include <string>
#include <sstream>

int main() {
	int a,b;
	std::stringstream ss;
	while(std::cin >> a >> b){
		int sum = a+b;
		ss << sum;
		std::string str = ss.str();
		std::cout << str.length() <<std::endl;
	}

	return 0;
}

C++: #include <iostream>
#include <math.h>

using namespace std;

int main(void){
	int	a,b;

	for(int i=0;i<200;i++){
		cin >> a;
		cin >> b;

		cout << (int)log10(a+b)+1 << endl;
	}

	return 0;
}

C++: #include <bits/stdc++.h>
using namespace std;

typedef long int lint;
typedef long long int llint;
typedef pair<int, int> pii;
typedef pair<int, string> pis;
typedef pair<long, long> pll;

#define EACH(i, c) for (__typeof((c).begin()) i = (c).begin(); i != (c).end(); ++i)
#define ALL(c) (c).begin(), (c).end()
#define FOR(i, s, e) for (int i = (s); i < (int)(e); ++i)
#define REP(i, n) FOR(i, 0, n)
#define endl '\n'
#define mod 1000000007
#define INF 100000000
#define fk first
#define sv second

const int dx[] = {1, 0, -1, 0, 1, 1, -1, -1}, dy[] = {0, 1, 0, -1, 1, -1, 1, -1};

template<typename T>
void print(const std::vector<T>& v, char sep=' ') {
  for (int i = 0; i < (int)v.size(); i++) {
    if (i != 0) cout << sep;
    cout << v[i];
  }
  cout << endl;
}

int main()
{
  cin.tie(0);
  ios::sync_with_stdio(false);
  int a, b;
  cin >> a >> b;
  int res = a + b, ct = 0;
  while (res != 0){
    ct++;
    res /= 10;
  }
  cout << ct << endl;
}

C++: #include <stdio.h>
#define N 16
int main(){
	char temp[N];
	int a[200],b[200];
	int i,j,k,n;
	for(i=0;i<200;i++){
		fgets(temp,N,stdin);
		if(temp[1]!='\0'){
			sscanf_s(temp,"%d %d",&a[i],&b[i]);
		}else{
			j=i;
			break;
		}
	}
	for(i=0;i<j;i++){
		k=1,n=0;
		while(a[i]+b[i]>=k){
			k*=10;
			n+=1;
		}
		printf("%d\n",n);
	}
	return 0;
}

C++: #include <iostream>
using namespace std;

int main(){
	int a, b;
	while(cin >> a >> b){
		a += b;
		int d = 0;
		while(a > 0){
			d++;
			a /= 10;
		}
		cout << d << endl;
	}
}

C++: #include <iostream>
using namespace std;

int main(){
	int i, j;
	while(cin >> i >> j){

		i += j;
		j = 0;

		while( i > 0, j++, i /=  10);
		cout << j << endl;
	}
	return 0;
}

C++: #include <iostream>

using namespace std;

int main()
{
    int a,b, count;
    while( cin >>a>>b ) {
        count = 1;
        a += b;
        while( a > 9 ){
            a /= 10;
            count++;
        }
        cout << count << endl;
    }
    
    
    return 0;
}

C++: #include<cstdio>
#include<algorithm>
#include<cmath>

using namespace std;

int main(){
        double a, b;
        int i, c;
        scanf("%lf%lf", &a, &b);
        c = a + b;
        for(i = 0; c != 0; i++){
                c /= 10;
        }
        printf("%d\n", i);
        return 0;
}

C++: #include <iostream>
#include <vector>

int get_number_of_digits(int num)
{
    if(num == 0)
        return 1;
        
    int digit = 0;
    while(num != 0){
        num /= 10;
        ++digit;
    }
    return digit;
}

int main()
{
    const int num_of_data = 200;
    const int min = 0;
    const int max = 1000000;
    
    int a, b;
    //std::cout << num_of_data << "個のまでの整数データa bの入力" << std::endl;
    for(int i = 0; i < num_of_data; ++i){
        std::cin >> a >> b;
        if(min <= a && a <= max && min <= b && b <= max)
        std::cout << get_number_of_digits(a + b) << std::endl;
        else{
            --i;
            //std::cout << "整数は" << min <<"以上" << max << "以下に設定" << std::endl;
        }
    }
    
    return 0;
}

C++: #include <iostream>

using namespace std;

int main()
{
	int a, b;

	while (cin >> a >> b) {
		int sum = a + b;
#if 0
		int n;
		for (n = 0; sum > 0; n++) {
			sum /= 10;
		}
		cout << n << endl;
#else
		if        (n > 10000000) {		n = 8;	} 
		} else if (n > 1000000) {		n = 7;	}
		} else if (n > 100000) {		n = 6;	}
		} else if (n > 10000) {		n = 5;	}
		} else if (n > 1000) {		n = 4;	}
		} else if (n > 100) {		n = 3;	}
		} else if (n > 10) {		n = 2;	}
		} else if (n > 1) {			n = 1;	}
		} else {					n = 0;
		}
	
#endif
	}
	return 0;
}

C++: #include<iostream>
#include<cmath>
using namespace std;

int main(){
  int a,b,x,keta;
  while(cin>>a>>b){
    x=a+b;
    keta=log10(x)+1;
    cout<<keta<<endl;
  }
}

C++: #include<bits/stdc++.h>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cctype>

#include<cmath>
#include<iostream>
#include<fstream>

#include<string>
#include<vector>
#include<queue>
#include<map>
#include<algorithm>
#include<set>
#include<sstream>
#include<stack>

using namespace std;

int main()
{
    long long int n,i,j,a,b,aa,bb,digit,digit1,ck=0,dk=0;
    while(scanf("%lld %lld", &a, &b)){
        if(a<=0 && b<=0) break;
    aa = a;
    bb = b;
    while(a){
        digit = a%10;
        a/=10;
        if(digit==0) continue;
        else{
            if(aa%(digit)==0) ck++;
        }
    }

    while(b){
        digit1 = b%10;
        b/=10;
        if(digit1==0) continue;
        else{
            if(bb%(digit1)==0) dk++;
        }
    }
    cout<<ck+dk<<endl;
    ck=0,dk=0;
    }
}

C++: import java.util.*;
import static java.util.Arrays.*;
import static java.lang.Math.*;
public class Main {

	static Scanner sc = new Scanner(System.in);
	
	public static void main(String[] args) {
		while (read()) {
			solve();
		}
	}
	
	static int a, b;
	static boolean read() {
		if (!sc.hasNextInt()) return false;
		a = sc.nextInt(); b = sc.nextInt();
		return true;
	}
	
	static void solve() {
		int sum = a + b, res = 0;
		while (sum > 0) {
			sum /= 10;
			res++;
		}
		System.out.println(res);
	}
}

C++: #include<iostream>
using namespace std;

int main(){
  int a, b;
  while(cin >> a >> b){
    int ab = a + b;
    int digit = 0;
    while(1){
      ab = ab/10; 
      digit++;
      if(ab==0)break;
    }
    cout << digit << endl;
  }
  return 0;
}