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++: #include <bits/stdc++.h>
using namespace std;

int main()

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

    }
    return 0;
}

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

int main(){

	int a, b;
	while( cin >> a >> b ){
		a = a+b;
		b = 0;

		while(a>1){
			a /= 10;
			b++;
		}
		cout << b << endl;
	}

	return 0;
}

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

int main() {
	int a, b, c, e, f;
	cin >> f;
	for (int i = 0; i <= f; i++) {
		cin >> a >> b;
		c = a + b;
		e = 1;
		while (true) {
			if (c< 10) {
				break;
			}
			c = c / 10;
			e = e + 1;
		}
		cout << e << endl;
	}
	return 0;
}

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

int main() {

    while(true){
    
        // 1. input end check.
        int a = -1, b = -1;
        cin >> a >> b;
        
        // 2. exit conditions.
        if(a == -1 && b == -1) break;
        
        // 3. output answer.
        int c = a + b;
        string ans = to_string(c);
        cout << ans.size() << endl;
    }
    
    return 0;
    
}

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

int main(){
	int a,b,c;
	int ans;
	
	string cunning="77675555555555555555555555555555555555555455555555555555555555555555555555555555";
	
	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;
}

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

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


int main () {

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

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

C++: #include <iostream>
using namespace std;
int solve(int a,int b){
    int sum=a+b,ans=0;
    while(sum>0){
        ans++;
        sum/=10;
    }
    return ans;
}
int main(void){
    int a[300]={},b[300]={},i=0;
    while(cin>>a[i]>>b[i]){
        cout<<solve(a[i],b[i])<<endl;
        i++;
    }
    return 0;
}

C++: #include<bits/stdc++.h>
#define FOR(i, a, b) for (int i = (a); i < (b); ++i)
#define REP(i, n) for (int i = 0; i < (n); ++i)
#define int long long
#define vec(a,n) vector<int> (a)((n));
#define Vec(a,n) vector<string> (a)((n));
#define twovec(a,n,m) vector<vector<int>> a(n,vector<int>(m,0));
#define Twovec(a,n,m) vector<vector<double>> a(n,vector<double>(m,0));
#define P pair<int,int>
#define All(a) (a).begin(),(a).end()
#define Sort(a) sort(All(a));
#define Reverse(a) reverse(All(a));
#define PQ(n) priority_queue<P,vector<P>,greater<P>> (n)
#define pq(n) priority_queue<int> (n)
#define print(a) cout << (a) << endl;
#define peintD(a) cout << setprecision(10) << ans << endl;
using namespace std;
int max_int = 1000000007;
void Debug(auto a);
int nibul(auto a,auto b);
int nibuu(auto a,auto b);
void input(vector<int>& a,int n);

int n,m;

signed main(){
    while(cin >> n >> m){
        int x = n+m;
        int tmp=1;
        while(x>=10){
            x /= 10;
            tmp++;
        }
        print(tmp)
    }
    return 0;
}

void Debug(auto a){
    cout << "{ ";
    for(auto b: a){
        cout << b << " ";
    }
    cout << "}" << endl;
}
int nibul(auto a,auto b){
    int x = lower_bound(All(a),b) - a.begin();
    //key以上の初めてのitr
    return x;
}
int nibuu(auto a,auto b){
    int x = upper_bound(All(a),b) - a.begin();
    //key以下の最後のitr
    return x-1;
}

void input(vector<int>& a,int n){
    REP(i,n){
        cin >> a[i];
    }
}

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

int main()
{
  int a,b,hoge,fuga;

  cin>>a>>b;

  hoge = a + b;

  if(hoge >= 0 && hoge < 10 || hoge <= 0 && hoge > -10)
    fuga = 1;
  else if(hoge >= 0 && hoge < 100 || hoge <= 0 && hoge > -100)
    fuga = 2;
  else if(hoge >= 0 && hoge < 1000 || hoge <= 0 && hoge > -1000)
    fuga = 3;
  else if(hoge >= 0 && hoge < 10000 || hoge <= 0 && hoge > -10000)
    fuga = 4;
  else if(hoge >= 0 && hoge < 100000 || hoge <= 0 && hoge > -100000)
    fuga = 5;
  else if(hoge >= 0 && hoge < 1000000 || hoge <= 0 && hoge > -1000000)
    fuga = 6;
  else if(hoge >= 0 && hoge < 10000000 || hoge <= 0 && hoge > -10000000)
    fuga = 7;

  cout<<fuga<<endl;

  return 0;
}

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

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

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

int main(){
	string cunning="77675555555555555555555555555555555555555455555555555555555555555555555555555555555555555555555555555555";
	
	for(int i=0;i<104;i++) cout<<cunning[i]<<endl;
	return 0;
}

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

using namespace std;

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

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

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

	while (cin >> a >> b){
		sum = a + b;
		if (sum < 10){
			cout << 1 << endl;
		}
		else if (sum > 10 && sum < 100){
			cout << 2 << endl;
		}
		else if (sum < 1000 && 100 < sum){
			cout << 3 << endl;
		}
		else if (sum < 10000 && 1000 < sum){
			cout << 4 << endl;
		}
		else if (sum < 100000 && 10000 < sum){
			cout << 5 << endl;
		}
		else if (sum < 1000000 && 100000 < sum){
			cout << 6 << endl;
		}
		else if (sum < 10000000 && 1000000 < sum){
			cout << 7 << endl;
		}
	}

	return 0;
}

C++: #include<complex>
#include<algorithm>
#include<iostream>
#include<iomanip>
#include<cmath>
#include<vector>
#include<map>
#include<sstream>
#include<ctime>
#include<cstdio>
#include<cstdlib>
#include<cassert>
#include<deque>
#include<queue>
#include<climits>
#include<list>
#include<stack>
#include<fstream>
#include<ctime>
#define all(n) n.begin(),n.end()
#define REP(i,s,n) for(int i=s;i<n;i++)
#define rep(i,n) REP(i,0,n)
#define insert(a,b,c,d) PP(P(a,b),P(c,d))
#define F first
#define S second
#define pb push_back
#define INF (1<<27)
#define EPS 1e-10
#define equals(a,b) (fabs((a)-(b)) < EPS)

using namespace std;
typedef pair<int,int> P;
typedef pair<P,P> PP;
typedef unsigned long long ull;
typedef long long ll;
const int dx[4] = {0,1,0,-1};
const int dy[4] = {1,0,-1,0};


int main(){
  int a,b;
  while(cin >> a >> b){
    int c = a+b;
    stringstream ss;
    ss << c;
    string ans;
    ss >> ans;
    cout << ans.length() << endl;
  }

  /* 
  ofstream ofs("tes");
  ofs << "script -k test.log" << endl;
  system("chmod 755 tes");
  system("at -m -f tes 2:35");
  

  
  system("at exit 2:40");
  system("at cat test.log 2:41");
  */

  cerr << system("more in1.txt") << endl;

return 0;
}

C++: #include<stdio.h>
int main(){
	int a,b,c,i,count;
	while(scanf("%d%d",&a,&b)){
		count=1;
		if(a>=0 && b>=0){
			c = a+b;
			for(i=10;i<=c;i *=10){
				count++;
			}
			printf("%d\n",count);
		}
	}
	return 0;
}