Go: package main

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

var scanner = bufio.NewScanner(os.Stdin)

func nextString() string {
	scanner.Scan()
	return scanner.Text()
}

func nextInt() (int, error) {
	return strconv.Atoi(nextString())

}

func main() {
	scanner.Split(bufio.ScanWords)

	for {
		a, err := nextInt()
		if err != nil {
			break
		}
		b, _ := nextInt()

		s := a + b
		nDigits := int(math.Log10(float64(s))) + 1
		fmt.Println(nDigits)
	}
}

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

int main(){
	cin.tie(0),ios::sync_with_stdio(false);
	int a,b;
	while(cin>>a>>b){
		int sum=a+b;
		int cnt=0;
		while(sum){
			++cnt;
			sum/=10;
		}
		cout<<cnt<<"\n"s;
	}
}

C++: #include <iostream>
using namespace std;
int main() {
	int a, b, c,d=0;
	for(int i=0;i<200;i++){
		cin >> a >> b;
		c=a+b;
		d=0;
		while(true){
			d=d+1;
			if(c<10){
				break;
			}
			c=c/10;
		}
		cout<<d<<endl;
	}
	return 0;
}

C++: #include<cstdio>

int main()
{
	int a,b;
	while(scanf("%d %d",&a,&b)!=(EOF))
	{
		int count=1;
		double d=a+b;
		while(d>=10)
		{
			d/=10;
			count++;
		}
		printf("%d",count);
	}
	return 0;
}

C++: #include <iostream>

using namespace std;

int main() {
	int a[500], b[500],sum[500],d[500],k[500];
	int i = 0;
	k[500] = 0;
	while (1) {
		cin >> a[i] >> b[i];
		if (a[i] == 0 && b[i] == 0)break;
		sum[i] = a[i] + b[i];
		while (!sum[i]) {
			sum[i] /= 10;
			k[i]++;
		}
		i++;
	}
	while (!k[i]) {
		cout << k[i] << endl;
	}
	return 0;
}

C++: #include <iostream>

using namespace std;

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

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

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

C++: #include <iostream>

u_int getDigit(u_int n){
	u_int digit = 0;
	
	while(n > 0){
		n /= 10;
		++digit;
	}
	
	return digit;
}
  
int main(){
    u_int a, b;
    
    while(std::cin >> a >> b){
        std::cout << getDigit(a + b) << std::endl;
    }
	
    return 0;
}

C++: //--------------------------------------------------template----------------------------------------//
//c
#include <stdio.h>
#include <time.h>
#include <math.h>
//c++
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <functional>
#include <cstdlib>
#include <sstream>
#include <string>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <vector>
#include <complex>
#include <cmath>
//c++11
#include <tuple>
#define all(c) ((c).begin(),(c).end())
#define rall(c) (c).rbegin(),(c).rend()
//#define sort(v,n) sort(v,v+n)
//#define vsort(v) sort(v.begin(),v.end())
#define vvsort(v) sort(v.rbegin(),v.rend())
#define ll long long
#define pb(a) push_back(a)
#define fi first
#define se second
#define inf 999999999
using namespace std;
const ll MOD = 1e9 + 7;
const double PI = acos(-1.0);
//---------------------------------------------------------------------------------------------//
int main() {
	int a, b;
	while (cin>>a>>b) {
		int c = a + b;
		int digit = 0;
		while (c > 0) {
			c /= 10;
			digit++;
		}
		cout << digit << endl;
	}
}

C++: #include<stdio.h>


int main(){
	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) {
        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;
}