Go: package main

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

func main() {
	sc := bufio.NewScanner(os.Stdin)
	for sc.Scan() {
		str := strings.Split(sc.Text(), " ")
		if len(str) != 2 {
			return
		}
		a, err1 := strconv.ParseInt(str[0], 10, 64)
		b, err2 := strconv.ParseInt(str[1], 10, 64)
		if err1 != nil || err2 != nil {
			return
		}
		a += b
		for b = 0; a > 0; a /= 10 {
			b++
		}
		fmt.Println(b)
	}
}

C++: #include <iostream>
#include <cstdio>
#define KETAMAX (15)
#define SETMAX (200)
using namespace std;
int main(void){
    
    int a[SETMAX] = {0};
    int b[SETMAX] = {0};
    int keta[SETMAX] = {0};
    int SetCount = 0;
    int ret = 0;
    char Dumy[KETAMAX] = {'\0'};
    
    while(1){
        
        ret = scanf("%d%d",&a[SetCount],&b[SetCount]);
        
        if(ret == EOF){
            break;
        }
        
        keta[SetCount] = sprintf(Dumy,"%d",(a[SetCount] + b[SetCount]));
        SetCount++;
    }
    
    for(int i = 0; i < SetCount; i++){
        printf("%d\n",keta[i]);
    }
    
    return(0);
}

C++: #include <iostream>

using namespace std;

int main(){
	
	int a,b;
	
	while(cin >> a >> b){
		
int n = a+b;
int ans = 1;
int s = 10;
while(n >= s){
s *= 10;
ans++;
}
	cout << ans <<endl;
	}
	}

C++: #define scanf_s scanf
#include <stdio.h>
#include <iostream>
using namespace std;
#define MAX 200
int main(void)
{
	int a,b,i,sum,cou=0;
	int ans[MAX]={0};
	while (scanf_s("%d %d",&a,&b)!=EOF) {
		sum=a+b;
		++ans[cou];
		if (sum!=0){
			while (1) {
				if (sum<=1) break;
				sum/=10;
				++ans[cou];
			}
		}
		++cou;
	}
	for (i=0;i<cou;++i) {
		if (i!=0) printf("\n");
		printf("%d",ans[i]);
	}
}

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

int main() {

	vector<int> ans;
	int a, b;
	//int cnt = 0;

	while (1) {
		cin >> a >> b;
		if (cin.eof()) { break; }
		ans.push_back(a + b);
	}

	for (int i = 0; i < ans.size(); i++)
	{
		string str = to_string(ans[i]);
		cout << str.size() << endl;
	}

	return 0;
}

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

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

C++: #include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <cctype>
#include <climits>
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <list>
#include <queue>
#include <deque>
#include <algorithm>
#include <numeric>
#include <utility>
#include <complex>
#include <memory>
#include <functional>
using namespace std;
int main(){
	int a,b;
	while(cin>>a>>b){
		int ans=1;
		int cnt=a+b;
		while(cnt>=10){
			cnt/=10;
			ans++;
		}
		cout<<ans<<endl;
	}
	return 0;
}

C++: #include<bits/stdc++.h>
#define rep(i,n) for(ll i=0;i<n;++i)
#define rrep(i,n) for(int i=n-1;i>=0;--i)
#define yesno(flg) if(flg){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}
#define MAX_N 1002
#define i197 1000000007
#define Vi vector<int>
#define Vl vector<long long>
#define pb(a) push_back(a)

using namespace std;

typedef long long ll;
typedef pair<ll,ll> P1;
typedef pair<int,int> Pi;
typedef pair<double,Pi> Pdi;
typedef pair<ll,int>Pli;
typedef pair<P1,ll> P2;
const ll INF=100000000001;
int dy[]={0, 0, 1, -1};
int dx[]={1, -1, 0, 0};
struct Road{double cost;int a,b;};
struct edge{int to,cost;};
struct pos{
	int x,y,cost;
};
int main() {

	rep(i,200){
		ll a,b;
		cin>>a>>b;
		if(cin.eof())break;
		ll t=a+b,ans=1;
		while(t/10>0){
			t/=10;
			ans++;
		}
		cout<<ans<<endl;
	}

	return 0;
}

C++: dataset = STDIN.read.split("\n").map do |data|
    data.split(" ")
end.map do |data|
  data.map(&:to_i)
end

dataset.each do |data|
    puts  (data[0] + data[1]).to_s.size
end

C++: #include <iostream>

using namespace std;

int main() {

	const int num=3;
	int a, b;

	while(cin >> a >> b) {

		int sum = a + b;
		int keta = 1;
		while (1) {
			if (sum >= 10) {
				keta++;
				sum /= 10;
			}
			else {
				break;
			}
		}

		cout << keta << endl;

	}

	return 0;

}

C++: #include<iostream>
int main(){
	int Digit, a, b, sum;

	while (std::cin >> a >> b){
		Digit = 0;
		sum = a + b;
		while (sum > 0){
			Digit++;
			sum /= 10;
		}
		std::cout<<Digit<<std::endl;
	}
return 0;
}

C++: #include<iostream>
#include<stdio.h>
using namespace std;
int main(){
	int a[200],b[200],c[200],i,count;
	i=0;
	while(cin>>a[i]>>b[i]){
		count=1;
		c[i]=a[i]+b[i];
		while(c[i]/10!=0){
			c[i]=c[i]/10;
			count++;
		}cout<<count<<endl;
	}
	return 0;
}

C++: // ------------------------------------
// Date:2018/ 2/11
// Problem:0002 : DigitNumber 2.cpp
//
// ------------------------------------

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

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

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

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

int digitCount(int number)
{
    int result = 1;
    while (number > 9) {
        number /= 10;
        result++;
    }
    return result;
}

int main(int argc, const char * argv[]) {

    std::string line;
    std::vector<int> sum;
    int n1 = 0;
    int n2 = 0;
    
    while (std::getline(std::cin, line))
    {
        sscanf((const char*) line.c_str(), "%d %d", &n1, &n2);
        sum.push_back(digitCount(n1 + n2));
        
    }
    std::cout << std::endl;
    
    std::vector<int>::iterator it = sum.begin();
    std::cout << *it << std::endl;
    
    while (++it < sum.end()) {
        
        std::cout << *it << std::endl;
    }
    
    return 0;
}

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

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

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

int main()
{
     int a,b,sum,digit;
    while(1)
    {
     cin>>a>>b;
    sum=a+b;
    digit=0;
    while(sum!=0)
    {
        sum/=10;
        digit++;
    }
    cout<<digit<<"\n";
    }

}

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

C++: #include<iostream>
#include<string.h>
#include<stdio.h>
using namespace std;
int main(){
int a,b,c;
char ans[100];
	while(1){
	cin>>a>>b;
		sprintf(ans,"%d",a+b);
	c=strlen(ans);
	cout<<c<<endl;
	}
return 0;
}

C++: #include<stdio.h>

using namespace std;

int main(){
 int a, b, i;
 while(a!=-1 && b!=-1){
  scanf("%d%d", &a, &b);
  a += b;
  for(i=0;i<201;i++){
   if(a/10==0){
    printf("%d\n", i+1);
    break;
   }
   else{
    a = a/10;
   }
  }
 }

 return 0;
}

C++: //c++11
#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main() {
    long int x, y;
    int ans;
    vector<long int> vx, vy;
    
    while(cin >> x >> y){
        vx.push_back(x);
        vy.push_back(y);
    }

    for(int i=0; i < vx.size(); i++ ){
        long int div = 1, sum = vx[i]+vy[i];
        for(int j = 0; ; j++){
            if(sum / div < 1){
                ans = j;
                break;
            }else{
                div *= 10;
            }
        }
        cout << ans << endl;
    }

}

C++: #include<bits/stdc++.h>
using namespace std;
int a,b,num;
int main(){
	while(cin>>a>>b){
		num=a+b;
		if(num>=0&&num<=9){
			cout<<"1"<<endl;
		}
		else if(num>=10&&num<=99){
			cout<<"2"<<endl;
		}
		else if(num>=100&&num<=999){
			cout<<"3"<<endl;
		}
		else if(num>=1000&&num<=9999){
			cout<<"4"<<endl;
		}
		else if(num>=10000&&num<=99999){
			cout<<"5"<<endl;
		}
		else if(num>=100000&&num<=999999){
			cout<<"6"<<endl;
		}
		else{
			cout<<"7"<<endl;
		}
	}
 }