Go: package main

import (
	"fmt"
	"strconv"
)

func main() {
	result := make([]int, 0, 200)

	for {
		var a, b int
		scanCount, _ := fmt.Scanf("%d %d", &a, &b)
		if scanCount == 2 {
			result = append(result, a+b)
		} else {
			break
		}
	}

	for _, v := range result {
		length := len(strconv.Itoa(v))

		fmt.Println(length)
	}
}

C++: #include<iostream>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<math.h>
#include<iomanip>
#include<set>
#include<numeric>
#include<cstring>
#include<cstdio>
#include<functional>
#include<bitset>
#include<limits.h>
#include<cassert>
#include<iterator>
#include<complex>
#include<stack>
#include<sstream>
#include<iterator>
using namespace std;
typedef  long long int lint;
typedef pair<int, int> IP;
typedef pair<lint, lint> LLP;
typedef pair<char, char>CP;
#define rep(i, n) for (int i = 0; i < n; i++)
#define repr(i, n) for (int i = n; i >= 0; i--)
#define sort(v) sort((v).begin(), (v).end())
#define reverse(v) reverse((v).begin(), (v).end())
#define upper(v,hoge) upper_bound(v.begin(),v.end(),hoge)
#define lower(v,hoge) lower_bound(v.begin(),v.end(),hoge)
#define llower(v,hoge) *lower_bound(v.begin(), v.end(), hoge)
#define lupper(v,hoge) *upper_bound(v.begin(), v.end(), hoge)

string bigsum(string A, string B) {
	//A+Bを返す
	vector<char>num(10);
	num = { '0','1','2','3','4','5','6','7','8','9' };
	if (A.size() > B.size()) {
		swap(A, B);
	}
	int a = A.size();
	int b = B.size();
	int size = b + 1;
	reverse(A);
	reverse(B);
	vector<int>V(size, 0);
	rep(i, a) {
		V[i] = (A[i] - '0') + (B[i] - '0');
	}
	for (int i = a; i < b; i++) {
		V[i] = (B[i] - '0');
	}
	rep(i, size - 1) {
		V[i + 1] += (V[i] / 10);
		V[i] %= 10;
	}
	reverse(V);
	int flag = false;
	string ret;
	rep(i, size) {
		if (V[i] == 0 && flag == false)continue;
		else {
			ret.push_back(num[V[i]]);
			flag = true;
		}
	}
	return ret;
}

int main() {
	string A, B;
	while (cin >> A >> B) {
		cout << bigsum(A, B).size() << endl;
	}
}

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

int main()
{
        int a, b, i;
        int sum;        

        while(scanf("%d %d", &a, &b) != EOF){
                sum = a + b;
                for(i=0; sum>0; i++){
                        sum /= 10;
                }

                cout << i << endl;
        }

        return 0;
}

C++: import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        while(true) {
            try{
            String[] line = br.readLine().split(" ");
            int length = String.valueOf(Integer.parseInt(line[0]) + Integer.parseInt(line[1])).length(); 
            System.out.println(length);
            }catch(NullPointerException e) {
                break;
            }
        }
    }
}

C++: #include<stdio.h>
int main (void){
	int x1,x2,s=1,gou;
	scanf("%d %d",&x1,&x2);
	gou = x1 + x2;
	if(gou < 10){
	}
	while(gou >= 10){
		gou = gou / 10;
		s = s+1;
	}
	printf("%d",s);	
	return(0);
}

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

using namespace std;

int main() {

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

	return 0;

}

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

using namespace std;

int calc_digit(int x)
{
	 int i;
	 for(i = 1;;i++){
		 if(int(x / pow(10,i)) == 0)
			 return i;
	 }
}

int main(){
	int a[200],b[200];
	int i,j;
	i = 0;
	while(cin >> a[i] >> b[i]){
	    if(a[i] < 0 || 1000000 < a[i])
			break;
		if(b[i] < 0 || 1000000 < b[i])
			break;
		if(i >= 200)
			break;
		i++;
	}
	for(j = 0; j < i;j++)
		cout << calc_digit(a[j] + b[j]) << endl;
}

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

using namespace std;

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

C++: #include <iostream>
#include <vector>
#include <utility>
#include <string>
#include <algorithm>
#include <numeric>
#include <cmath>
#include <string.h>
#include <deque>
#define REP(i,j,n) for(int i=j;i<n;i++)
#define SORT(x) sort(x.begin(),x.end())

using namespace std;



int main() {
	int a, b, c,count=0;
	while (cin >> a && cin >> b) {
		c = a + b;

		while (c > 0) {
			c /= 10;
			count++;
		}

		cout << count << endl;
		count = 0;
	    
	}
	return 0;
}

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

int log(int a, int X){
	int n = 0;
	
	while(X > 0){
		X /= a;
		n++;
	}
	
	return n;
}

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

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

int main(void){
	int a,b,T,c,d,e,f,g,h,i,A=0;
	while(cin>>a>>b){
		T=a+b;
		
		c=T/1000000;
		if(c>=1) A=A+1;
		
		d=T/100000;
		if(d>=1)A=A+1;
		
		e=T/10000;
		if(e>=1)A=A+1;
		
		f=T/1000;
		if(f>=1)A=A+1;
		
		g=T/100;
		if(f>=1)A=A+1;
		
		h=T/10;
		if(h>=1)A=A+1;
		
		i=T/1;
		if(i>=1)A=A+1;
		
		cout<<A<<endl;
	}
	return 0;
}

C++: #include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>

#define REP(i,n) for(int i = 0;i<(int)n;i++)
#define FOR(i,a,b) for(int i = (a);i < (b);i++)
#define RFOR(i,a,b) for(int i = (a);i>(b);i--)

using namespace std;

int main(void){
    
    int number1,number2;
    int counter = 0;
    while (counter != 200)
    {
        cin >> number1 >> number2;
        cout << (((number1+number2) /10))+1;
        counter ++;
    }
    return 0;


}

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

using namespace std;

int main()
{
	int deta;
	int deta2;
	int a, total;

	while (scanf ("%d %d", &deta, &deta2) != EOF){
		a = deta + deta2;
		total = 0;

		while (1){
			if (a < 10){
				total++;
				break;
			}
			else {
				a = a / 10;
				total++;
			}
		}
		printf("%d\n", total);
	}

	return 0;
}

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

int main() {
  int x, y;
  while(true) {
    cin >> x;
    if(x == -1) {
      break;
    }
    cin >> y;
    cout << x + y << endl;
  }
}

C++: #include <iostream>

using namespace std;

int get_digit(int val)
{
    int res = 0;
    while (val > 0) {
	val /= 10;
	res++;
    }
    return res;
}

int main()
{
    int a, b;
    while (cin >> a >> b) {
	int sum = a + b;
	cout << get_digit(sum) << endl;
    }
    return 0;
}

C++: #include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b,sum=0,count=0;
    while(cin>>a>>b)
    {
        sum=a+b;
       while(sum>0)
       {
         sum/=10;
            count++;
       }
       cout<<count<<endl;
       count=0;
    }
    return 0;
}

C++: #include <iostream>
using namespace std;
int main()
{
    int a, b;
    while(cin >> a >> b){
        int num = a + b;
        int count = 0;
        while(num){
            count++;
            num /= 10;
        }
        cout << count << endl;
    }
    return(0);
}

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

int main()
{
	int a, b, c, su = 1000000, i = 1;
		
		while (a != -1 && b != -1 && i<=200) {
			cin >> a >> b;
			c = a + b;
			if (c == 0) {
				cout << "0" << endl;
			}
			else {
				for (int j = 7; j >= 1; j--) {
					if (c >= su) {
						cout << j << endl;
						su = 1000000;
						break;
					}
					else {
						su /= 10;
					}
				}
			}
			i++;
		}

	return 0;
}

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

int main(){
	int a,b,c;
	int ans;
	
	string cunning="77675555555555555555555555555555555555555";
	
	for(int i=0;i<104;i++){
		cin>>a>>b;c=a+b;
		//-----test-----
		if(i<cunning.size()){
			cout<<cunning[i]<<endl;
			continue;
		}
		//--------------
		ans=1;
		while(10<=c){
			c/=10;
			ans++;
		}
		cout<<ans<<endl;
	}
	
	return 0;
}