Go: package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func sliceAtoi(sa []string) ([]int, error) {
	si := make([]int, 0, len(sa))
	for _, a := range sa {
		i, err := strconv.Atoi(a)
		if err != nil {
			return si, err
		}
		si = append(si, i)
	}
	return si, nil
}

func getDigits(ary []int) (digits int) {
	sum := 0
	for _, v := range ary {
		sum += v
	}

	for sum != 0 {
		sum /= 10
		digits++
	}
	return
}

func getsTwoNumAsArray() (nums [][]int) {
	scanner := bufio.NewScanner(os.Stdin)

	for scanner.Scan() {
		str := scanner.Text()
		if str == "" {
			break
		}

		ary, _ := sliceAtoi(strings.Split(str, " "))
		nums = append(nums, ary)
	}

	return
}

func main() {
	ary := getsTwoNumAsArray()

	for _, v := range ary {
		fmt.Println(getDigits(v))
	}
}

C++: #include <iostream>

using namespace std;

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

    return 0;
}

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

using namespace std;

int main()
{
	int a, b;
	cin >> a >> b;
	
	int sum = a + b;
	int count = 0;
	
	for(int i = 10; sum != 0; i *= 10)
	{
		int diff = sum % i;
		sum -= diff;
		count++;
	}
	
	cout << count << endl;
	return 0;
}

C++: #include <iostream>

using namespace std;

int main(){
	int a,b;
	cin>>a>>b;
int c=0;
int n;
n=a+b;
while (n>0){
	c++;
	n=n/10;
}

cout<<c<<endl;
}

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

int main() {
/*	int a[3];
	cin >> a[0] ;
	a[1] = 3;
	a[2] = a[0] * 10;

	cout << a[0] <<" " << a[1] <<" "<< a[2] << endl;
	
	for (int i = 0; i < 3; i++) {
		cout << a[i] << endl;
	}


	sort(a,a+5);
*//*
	int a[10];
	for (int i = 0; i < 10; i++) {
		cin >> a[i];
	}
	
	sort(a,a+10,greater<int>());

	for (int i = 0; i < 3; i++) {
		cout << a[i]<<endl;
	}
*/
	int ans = 0;
	int a, b,c;
	for(int i=0;i<200;i++) {
		ans = 0;
		cin >> a >> b;
		c = a + b;

		if ( c==0   ) {
			ans = 1;
		}
		else{
			while (c > 0) {
				c /= 10;
				ans++;
			}
		}
		cout << ans << endl;
	}
	return 0;;
}

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

int digit(int num){
	if((num / 10) > 0){
		return (digit(num/10))+1;
	}
	else return 1;
}

int main(){
	int num1,num2,result=0;
	char buf[32];
	while(1){
		if(scanf("%d %d",&num1,&num2) == 0)break;
		result = 0;
		result += digit(num1);
		result += digit(num2);
		cout << result << endl;
		break;
	}
	return 0;
}

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

using namespace std;

void inputData(vector<string>& data_set) {
	string buffer;
	while(getline(std::cin,buffer))
		data_set.push_back(buffer);
}

vector<string> splitString(const string& str, const string& separator = " ") {
	vector<string> ret;

	std::size_t bp, ep;
	bp = ep = 0;
	while((ep = str.find_first_of(separator, bp)) != string::npos){
		if(bp != ep){
			ret.push_back(string(str.begin() + bp, str.begin() + ep));
		}
		bp = ep + 1;
	}

	if(bp <= str.size() - 1){
		ret.push_back(string(str.begin() + bp, str.end()));
	}

	return ret;
}

template <class T>
T convertStringToNumber(const string& str) {
	stringstream ss;
	T ret;

	ss << str;
	ss >> ret;

	return ret;
}

vector<int> addDigits(const vector<string>& str_set) {
	vector<int> data_set(str_set.size());

	auto countDigits = [](const int num) -> int {
		int n = num, i;
		for(i = 0; n > 0; n/=10,++i);
		return i;
	};

	for(int i = 0; i < str_set.size(); ++i) {
		vector<string> temp = splitString(str_set[i], " ");
		data_set[i] = countDigits(convertStringToNumber<int>(temp[0])
									+ convertStringToNumber<int>(temp[1]));
	}

	return data_set;
}


void doAllProcess() {
	vector<string> buffer;

	inputData(buffer);

	auto ret = addDigits(buffer);

	for(auto&& e : ret)
		std::cout << e << std::endl;
}



int main() {
	doAllProcess();


	return 0;
}

C++: #include<stdio.h>


int main(void){
	char a[21];
	char b[21];
	int A;
	int B;
	int i;
	int l=1;
	fgets(a,sizeof(a),stdin);
	fgets(b,sizeof(b),stdin);
	sscanf(a,"%dツ”, &A);
	sscanf(b,"%d", &B);
	i=A+B;
	while(i  >= 10){
		i=i/10;
		l=l+1;
	}
	printf("%d" ,l);
}

C++: #include<iostream>

using namespace std;

int main(){
  int a,b;
  while(cin >> a >> b){
    int count = 0;
    int result = a + b;
    while(1){
      if(result == 0){
        cout << count << "\n";
        break;
      }
      result /= 10;
      count++;
    }
  }
  return 0;
}

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


int judge(int n){
	if (n / 1000000 != 0) return 7;
	if (n / 100000 != 0) return 6;
	if (n / 10000 != 0) return 5;
	if (n / 1000 != 0) return 4;
	if (n / 100 != 0) return 3;
	if (n / 10 != 0) return 2;
	if (n / 1 != 0) return 1;
}


int main(){
	int a, b;
	int n , i , j;
	int x[200];
	j = 0;
	while (cin >> a >> b)
	{
		n = a + b;
		x[j] = judge(n);
		j++;
		cout << "#" << endl;
	}
	for (int i = 0; i < j; i++){
		cout << x[i] << endl;
	}

	return 0;
}

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

using namespace std;

int main() {
	for (int a, b; cin >> a >> b;) {
		stringstream ss;
		ss << a + b;
		cout << ss.str().size() << endl;
	}
	return 0;
}

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

int main()
{
	int a,b,sum;
	int count = 0;
	
	cin >> a >> b;

	sum = a + b;

	for(int i = 1 ;sum != 0 ;i++){

		sum /= 10;
		count = i;
	}

	cout << count << endl;
	

	return 0;
}

C++: #include <stdio.h>

int main(void)
{
	int a, b;
	int add;
	int count;

	scanf("%d %d", &a, &b);

	add = a + b;

	count = 0;

	while (add){
		add /= 10;

		count++;
	}

	printf("%d\n", count);

	return (0);
}

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

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

	return 0;
}

C++: #include <iostream>

using namespace std;

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

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

int a = 0, b = 0;

int digit(int n){
    return log10(n)+1;
}

int main(void){
    while(std::cin >> a >> b){
        std::cout << digit(a+b) << std::endl;
    }
}

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

int main() {
  int x, y;
  while(cin>>x>>y) {
    char s[100];
    sprintf(s,"%d",x+y);
    cout << strlen(s) << endl;
  }
}

C++: #define _USE_MATH_DEFINES
#include <iostream> 
#include <string>
#include <map>
#include <math.h>
#include <vector>
#include <algorithm>
using namespace std; 
int main(){
	int a, b;
	while (cin >> a >> b){
		int k = log10(a+b) + 1;
		cout << k << endl;
	}
	return 0;
}

C++: #include <bits/stdc++.h>
// #include "bits/stdc++.h"

#define pout(n)  printf ("%d\n", n)

#define rep(i,a,n) for (int i = a;i < n;i++)
#define per(i,n,a) for (int i = n-1;i >= a;i--)

const int d4x[4] = {1, 0, -1, 0};
const int d4y[4] = {0, 1, 0, -1};
const int d8x[8] = { 1,1,0,-1,-1,-1,0,1 };
const int d8y[8] = { 0,1,1,1,0,-1,-1,-1 };
 
typedef long long ll;
using namespace std;
 
int main() {
  ll a,b;
  while(cin >> a >> b){
    a += b;
    int count = 1;
    
    while((a /= 10) > 0){
       a /= 10;
      count++;
    }
    
    printf("%d",count);
  }
  return 0;
}

C++: #include <bits/stdc++.h>
#define INT(name) int name; scanf("%d",&name);
#define VINT(name,n) vector<int> name(n); for(int i = 0;i < n;i++) scanf("%d",&name[i]);

using namespace std;

int main(int argc, char const *argv[]){
	int a,b;
	vector<int> answer;
	while(1){
		if(cin.eof())	break;
		cin >> a >> b;
		printf("%d\n",(int)log10(a+b) + 1);
	}
}

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

int main(){
	int a,b,c;
	int ans;
	int cnt=-1;
	
	while(cin>>a>>b){
		cnt++;
		//-----test-----
		if(a<10000) break;
		
		//--------------
		c=a+b;
		ans=1;
		while(10<=c){
			c/=10;
			ans++;
		}
		cout<<ans<<endl;
	}
	
	return 0;
}