Go: package main

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

var sc = bufio.NewScanner(os.Stdin)

func Sliceconvtoi() []int {
	strs := strings.Split(sc.Text(), " ")

	var ints []int
	var x int

	for _, s := range strs {
		x, _ = strconv.Atoi(s)
		ints = append(ints, x)
	}

	return ints
}

func main() {
	for sc.Scan() {
		i := Sliceconvtoi()
		fmt.Println(int(math.Log10(float64(i[0]+i[1]))) + 1)
	}

}

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

#define GET_MACRO(a, b, c, d, NAME, ...) NAME
#define REP(...) GET_MACRO(__VA_ARGS__, REP4, REP3, REP2)(__VA_ARGS__)
#define REP2(i, a) REP3(i, 0, a)
#define REP3(i, a, b) REP4(i, a, b, 1)
#define REP4(i, a, b, s) for (int i = (a); i < (int)(b); i += (s))
#define REPR(...) GET_MACRO(__VA_ARGS__, REPR4, REPR3, REPR2)(__VA_ARGS__)
#define REPR2(i, a) REPR3(i, 0, a)
#define REPR3(i, a, b) REPR4(i, a, b, 1)
#define REPR4(i, a, b, s) for (int i = (b)-1; i >= (int)(a); i -= (s))
#define ALL(c) (c).begin(), (c).end()
#define DUMP(x) (std::cerr << #x << ':' << ' ' << x << '\n')
#define TMPL_T template <typename T>
#define TMPL_TU template <typename T, typename U>
#define mut auto
#define let const auto

using Int = long long;
// clang-format off
namespace extio {
std::string delimiter=" ",pdelimiter=" ";
std::string bracket_b="",bracket_e="";
void chdelim(const std::string&s){delimiter=s;}
void chpdelim(const std::string&s){pdelimiter=s;}
void chbracket(const std::string&b,const std::string&e){bracket_b=b,bracket_e=e;}
TMPL_T  void pcont(std::ostream&os,const T&x){int c=0;for(const auto&a:x){if(c++)os<<delimiter;os<<a;}}
TMPL_TU void ppair(std::ostream&os,const std::pair<T,U>&p){os<<bracket_b<<p.first<<pdelimiter<<p.second<<bracket_e;}
}
namespace std {
TMPL_T ostream& operator<<(ostream&os,const vector<T>&x){extio::pcont(os,x);return os;}
TMPL_T ostream& operator<<(ostream&os,const set<T>&x){extio::pcont(os,x);return os;}
TMPL_T ostream& operator<<(ostream&os,const multiset<T>&x){extio::pcont(os,x);return os;}
TMPL_T ostream& operator<<(ostream&os,const deque<T>&x){extio::pcont(os,x);return os;}
TMPL_TU ostream& operator<<(ostream&os,const map<T,U>&x){extio::pcont(os,x);return os;}
TMPL_TU ostream& operator<<(ostream&os,const pair<T,U>&x){extio::ppair(os,x);return os;}
}
TMPL_TU inline bool chmax(T&x,U a){return x<a&&(x=a,1);}
TMPL_TU inline bool chmin(T&x,U a){return a<x&&(x=a,1);}

inline int in(){int x;std::cin>>x;return x;}

struct Initializer_ {
  Initializer_(){
    std::cin.tie(0);
    std::ios::sync_with_stdio(0);
    std::cout << std::setprecision(10);
    std::cerr << std::setprecision(10);
  }
} precalc;
// clang-format on
// }}}

using namespace std;

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

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

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

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

int main(){
	int a,b,c;
	int ans;
	
	string cunning="7767557";
	
	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>
#include <cmath>

using namespace std;

int main()
{
	int a;
	int b;

	while (!feof(stdin)) {
		scanf("%d%d", &a, &b);
		if (a + b == 0) printf("%d\n", 1);
		else printf("%d\n", (int)log10(a + b) + 1);
	}

		return (0);
	
}

C++: #include <iostream>

int main(int argc, const char * argv[]) {
    
    std::string a, b ;
    
    
    while ( std::cin >> a >> b )
        std::cout << (a+b).length() << "\n";
    
    return 0;
}

C++: #include <iostream>

using namespace std;

int main(){
	int a,b;
	while(eof){
	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 <sstream>
#include <cstring>

using namespace std;

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

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

int main()
{
	int d, a, b, s;

	d = 1;
	
	
	while(cin >> a >> b){
		
		s = 0;
		

		a += b;

		while(a>0){
			a /= 10;
			s++;
		}

		cout << s << endl;
		d++;

	}


	

	return 0;
}

C++: #include <iostream>
using namespace std;
int main(){
int A,B,C,i=10,test=1;
cin >> A >> B;
C = A + B;
if(C<10){
cout << 1 << endl;
}
else{
while(test!=0){
i = i * 10;
test++;
if(C<i){
cout << test << endl;
test = 0;
}
}
}
}

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

int main()
{
  int n1, n2;
  int ans = 0;
  cin >> n1 >> n2;
  int sum = n1 + n2;
  while(sum > 0){
    sum /= 10;
    ans++;
  }
  cout << ans << endl;
}

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

int main(void){
	while(cin.eof()){
		int a, b, d=0, s; //d:digit s:sum
		cin >> a >> b;
		s = a + b;
		while(s>=1){
			s = s/10;
			d++;
		}
		cout << d << endl;
	}
	return 0;
}

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

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

using namespace std;

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


int main() {
	solve();
	return 0;
}

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

using namespace std;

int main() {
    int a[10];
	for(int i=0;i<=9;i++) std::cin>>a[i];
 std::sort(a, a + 10, greater<int>());            // ツソツーツトツつキツづゥツ。
    for (int j = 0; j < 3; j++) {
        std::cout << a[j] << ", ";    // ツ個仰嘉環づーツプツδ環δ督トツつオツづづ敖づゥツ。
    }
    return 0;
}

C++: #include<iostream>

int main(){
int a, b, c = 0, d = 0;
std::cin >> a >> b;
for(){
        if(a < 10){
                a = a % 10;
                c++;
                }else
                break;
        }
for(){
        if(b < 10){
                b = b % 10;
                d++;
                }else
                break;
        }
std::cout << c + d;
}

C++: #include <cstdio>
#include <algorithm>
int main()
{
        int n[10][3];
        int i;
        for(i=0;i<20;i++)
        {
                scanf("%d %d",&n[i][1],&n[i][2]);
                n[i][3]=n[i][1]+n[i][2];
                if(n[i][3]<10 && 0<n[i][3]) printf("1\n");
                if(n[i][3]<100 && 9<n[i][3]) printf("2\n");
                if(n[i][3]<1000 && 99<n[i][3]) printf("3\n");
                if(n[i][3]<10000 && 999<n[i][3]) printf("4\n");

                if(n[i][1]==EOF)break;
        }

        return 0;

}

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

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

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

    return 0;
}

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

C++: #include <iostream>
#include <string>
using namespace std;
int main() {
    int a, b;
    while (cin >> a >> b) {
        cout << to_string(a + b).size() << endl;
    }
    return 0;
}